系统.f#中用于字符的字符串扩展成员



我已经阅读了System.String的文档和源代码。我可以看到默认索引器是用this[int index]定义的,并且使用了别名"Chars"。我想通过编写下面的代码来扩展它。

type System.String with
    member self.Chars (boolean:bool) = if boolean then self.[0] else self.[1]
printfn "%c" ("abc".[false])
printfn "%c" ("abc".Chars(false))

原因是因为我看到其他文章和代码片段指出我将具有这种能力。我现在正试着测试一下。我也注意到了这个系统。字符串被定义为密封的

[<Sealed>]

我一直在做很多搜索,看看像fssnip.net和Tomas p的文章和这里的Stackoverflow这样的网站。我错过了什么?

这不起作用的原因是因为char是属性的别名,而不是方法本身。在属性上似乎不可能使用扩展方法。

即使它是一个带参数的get,也必须创建一个通用版本,并且可能需要指向一个方法,我可以从中创建约束版本。@Ringil给我指明了正确的方向。谢谢你!美好的一天。

最新更新