fsharp中常用类的静态函数

时间:2012-02-29 14:15:14

标签: f# extension-methods static-methods

我经常调用静态方法调用静态类,这对我来说似乎不自然:

let l = Seq.length myseq

使用

对我来说更自然
let l =  myseq.length

你可以想象许多基类

是一样的

有没有办法让所有这些方法自动作为实例方法使用,而无需为每个方法编写扩展方法?

4 个答案:

答案 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一样,流水线风格在某种程度上是您最接近的方式。但实际上,您必须知道定义函数的正确模块。