Each循环
For循环在Ruby中不常见,因为当我们需要循环时,我们会根据惯用法这样写:
1.upto(5).each { |e|
puts e
}
以上代码等价于:
print = lambda { |e| puts e }
1.upto(5).each(&print)
1.upto(5) 的返回值为 [1,2,3,4,5], 是一个数组实例(Array Instance)
each 是数组的实例方法(Instance Method),我们可以像调用其它普通方法(Method)一样来调用each
我们定义了 print 这个 Lambda,并把它用为调用 each 时的最后一个特殊“块(Block)”参数
我们使用 & (Ampersand)将print的类型从Lambda转为块(Block)
块(Block)
在Ruby中每一次调用方法都可以传入一个块参数。
块参数可以没有但最多只能有1个。
传入块参数