Haskell中的map函数有两个输入参数。第一个参数是函数,第二个参数是列表。 map函数将作为输入参数传递的函数应用于列表中的所有元素,并返回一个新列表。
C#是否等同于此功能?
答案 0 :(得分:84)
答案 1 :(得分:20)
Select
和SelectMany
的另一种替代方法是编写自己的扩展方法。
public static IEnumerable<U> Map<T, U>(this IEnumerable<T> s, Func<T, U> f)
{
foreach (var item in s)
yield return f(item);
}
感谢Wes Dyer提供这种甜蜜的扩展方法! :) 有关详细信息,请参阅post。
答案 2 :(得分:14)
由于已经提及Select
和SelectMany
,我会回答您未提出的其他问题:fold
被发现为Aggregate。
现在每个读这篇文章的人都应该完全具备能够使用语言Y成语写出语言X的那个人...所以为了你的C#程序员,不要太进行程。
答案 3 :(得分:11)
要回答一个你没有问的问题,Haskell相当于绑定“序列”monad在C#中称为SelectMany。有关详细信息,请参阅Wes Dyer关于此的精彩文章:
http://blogs.msdn.com/wesdyer/archive/2008/01/11/the-marvels-of-monads.aspx
答案 4 :(得分:3)
ConvertAll怎么样?它看起来像最贴近地图。