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的话,执行方法时后面必须要加代码块。
本文介绍了Ruby语言中yield关键字的基本用法,通过一个简单的示例展示了如何在方法定义中使用yield来调用外部代码块,并解释了在不同情况下方法调用的行为差异。

2万+

被折叠的 条评论
为什么被折叠?



