【转】关于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的话,执行方法时后面必须要加代码块。

posted on 2013-02-19 23:52  冰河程序猿  阅读(250)  评论(0编辑  收藏  举报

导航