读到Ruby里有个东西叫code block,它支持closure。
list = [1,2,3,4,5,6,7,8,9,10]
sum = 0
list.each() {|i| sum = sum + i}
这里,红字的{....}的东西就是code block。在上面,数组调用了它本身的方法,each(),而each()则会通过yield来反复调用code block里的语句。
在C#2.0中,code block相当于匿名方法,类似的实现为
int[] list = {1,2,3,4,5,6,7,8,9,10};
int sum = 0;
Array.ForEach<int>(list, delegate(int i) { sum += i; });
但如果使用LINQ的话,类似运算可以简化为
int sum = list.Sum();
注意,这个Sum()方法并不是数组类本身的方法,而是标准查询运算符(Standard Query Operators)中的方法
打印 | 张贴于 2006-01-17 02:52:00 | Tag:.NET
留言反馈
alert('test');
</script>
[/code]
reduce(lambda x,y:x+y, list)
Dim list As Integer() {1,2,3,4,5,6,7,8,9,10}
Dim sun As Integer = Query(list).Fold(AddTwo(Of Integer))
list = [1,2,3,4,5,6,7,8,9,10]
total = sum(list)
这里使用的是built-in函数sum,或者采用上面Ruby的做法(for each):
list = [1,2,3,4,5,6,7,8,9,10]
total = 0
for n in list:
total += n