Block是一种可以和方法调用相关联的代码块,有点象参数传 递
Block的表达方式:
1) {........}
如:puts {"good morning,baoju"}
2) do .... end
如:
do
puts "hello,jack"
puts "nice to meet you"
end
一般来说只有一行那么使用{},如果有多行那么使用do...end
Block与函数的关联
block 可以和方法的调用相关联,block可以写在方法的后面,如:
greet {puts "hi"}
如果函数有参数,那么block写在 参数的后面,如:
greet("jack","morning") {puts "hi"}
使用yield可以把调用block中的代码,如:
def greet
puts "test block"
yield
yield
puts "call block two times"
end
puts greet {puts "hi"}
那么输出为:
test block
hi
hi
call block two times
----------------------------------------------------------
可 以传递参数给对yield的调用,如:
def hell()
yield('morning','hxr')
end
puts hell {|m,n| puts "good "+m+","+n}
那么输出为:
good morning,hxr
-------------------------------------
在 ruby中会经常使用block来实现迭代器,如
(1..3).each {|i| puts i}
输出为:
12
3