【转】关于ruby中的yield
def hello puts "Hello" yield yield puts "World" end
hello {puts "MIDDLE"}
执行结果:
Process started >>> Hello MIDDLE MIDDLE World <<< Process finished
最后一行如果改成 hello {}
执行结果:
Process started >>> Hello World <<< Process finished
最后一行如果改成 hello
Process started >>> C:/test2.rb:3:in `hello': no block given (yield) (LocalJumpError) from C:/test2.rb:8:in `<main>' Hello <<< Process finished.
暂且认为yield是ruby中的一个占位符吧,指代所在方法之后的代码块。并且如果方法中有yield的话,执行方法时后面必须要加代码块。