【发布时间】:2011-03-15 11:49:24
【问题描述】:
在使用 F# 解决一些小问题后,我发现将 C# 扩展方法视为“一种将 .进入管道转发运算符'。
例如,给定一个名为 int 的 Int32 序列,C# 代码:
ints.Where(i => i > 0)
.Select(i => i * i)
类似于 F# 代码
let where = Seq.filter
let select = Seq.map
ints |> where (fun i -> i > 0)
|> select (fun i -> i * i)
事实上,我经常认为 IEnumerable 上的扩展方法只是一个函数库,提供与 F# 的 Seq 模块类似的功能。
显然,管道参数是 F# 函数中的最后一个参数,但 C# 扩展方法中的第一个参数 - 但除此之外,在描述扩展方法或向其他开发人员传递管道时使用该解释是否有任何问题?
我是否会误导他们,或者这是一个有用的类比?
【问题讨论】:
标签: c# f# extension-methods