有更短的方法吗?
Seq.map (fun x -> x.SomeFunction()) xs
Seq.map (fun x -> x.SomeProperty) xs
这显然不起作用
Seq.map SomeFunction() xs
Seq.map SomeProperty xs
这会更简单地允许这样的事情
Seq.map (SomeProperty >> fn1 >> fn2) xs
我在这里使用Seq.map,但没有什么特别之处。还有许多其他功能,这将是很好的。我花了一些时间来看看我是否错过了某些语法糖,但没有运气。
答案 0 :(得分:4)
目前没有将属性或方法转换为函数的语法,但它是a popular feature request。随意在那里添加你的投票。
您可以做的最接近的事情是使用静态成员约束定义一个函数,该约束允许您调用特定名称的方法并键入:
例如,要拨打Next : unit -> 'R
,您可以使用:
let inline next (value:^T) : 'R =
(^T : (member Next : unit -> 'R) value)
现在你可以写
了[ new System.Random() ] |> List.map next
这不是非常有用(除非你需要经常为特定的方法或属性执行此操作),所以我的偏好是只使用显式函数。