关于ruby中的yield

来源:互联网 发布:英语数字读法规则 知乎 编辑:程序博客网 时间:2024/06/14 16:21

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

 

 

原创粉丝点击