思归呓语

衣带渐宽终不悔,为伊消得人憔悴
随笔 - 409, 评论 - 2969, 引用 - 245

导航

关于

标签

每月存档

最新留言

广告

 

读到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

留言反馈

#re: 匿名代码块 编辑
[code]<script>
alert('test');
</script>
[/code]
2006-02-05 16:00:00 | [匿名用户:test]
#re: 匿名代码块 编辑
楼上的写法非常python:)
2006-01-17 22:10:00 | [匿名用户:rIPPER]
#re: 匿名代码块 编辑
Python里还可以这样写
reduce(lambda x,y:x+y, list)
2006-01-17 11:49:00 | [匿名用户:刘六]
#re: 匿名代码块 编辑
VBF:

Dim list As Integer() {1,2,3,4,5,6,7,8,9,10}
Dim sun As Integer = Query(list).Fold(AddTwo(Of Integer))
2006-01-17 09:47:00 | [匿名用户:Ninputer]
#re: 匿名代码块 编辑
我再加一个Python的写法,简直easy到家了:

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
2006-01-17 09:11:00 | [匿名用户:Cavingdeep]
#re: 匿名代码块 编辑
lamda-expression
2006-01-17 08:27:00 | [匿名用户:tiaoci]
对不起,目前本随笔不允许发表新评论.

Powered by: Joycode.MVC引擎 0.5.1.8