block example in ruby

这几天看Ruby,挺有意思的,比如Block的用法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17


def total2(from, to, &block)
result = 0
from.upto(to) do |num|
if block
result += block.call(num)
else
result += num
end
end
return result
end

p total2(1, 10)
p total2(1, 10) {|num| num * 2}
p total2(1, 10) {|num| num ** 2}

上面的三个输出分别是

1
2
3
55
110
385

函数total2中的第三个传递块的参数叫做Proc参数