我经常调用静态方法调用静态类,这对我来说似乎不自然:
let l = Seq.length myseq
使用
对我来说更自然let l = myseq.length
你可以想象许多基类
是一样的有没有办法让所有这些方法自动作为实例方法使用,而无需为每个方法编写扩展方法?
答案 0 :(得分:4)
有没有办法让所有这些方法自动作为实例方法使用,而无需为每个方法编写扩展方法?
没有。即使你这样做了,你也会失去F#中类型推断的好处。
答案 1 :(得分:2)
通常,无法将模块中的值视为实例成员。但是,对于Seq
模块,您可以在Seq
命名空间中找到许多System.Linq
函数的扩展成员类似物,因此您可以这样做:
open System.Linq
let arr = [| 1 .. 10 |]
let ct = arr.Count()
let arr2 = arr.Select(fun i -> i + 1)
// etc.
答案 2 :(得分:1)
如何使用管道操作符?
let l = myseq |> Seq.length
编辑: 或
let l = myseq.Count()
编辑2:
正如kvb所指出的,Count()需要System.Linq
答案 3 :(得分:0)
事实上,你没有Intellisense帮助你看看哪些行动困扰你?
与上面写的Umair一样,流水线风格在某种程度上是您最接近的方式。但实际上,您必须知道定义函数的正确模块。