def foo
puts "in foo"
s = yield
puts "s = #{s}"
return 2
ensure
puts "in ensure"
return 1
end
def bar
foo do
puts "in bar block"
return 3
end
return 4
end
[36] pry(main)> r = bar
in foo
in bar block
in ensure
=> 4
Run Code Online (Sandbox Code Playgroud)
我期望r = 3,但事实证明它是r = 4.如果我删除了确保代码,则预期r = 3.为什么?
def foo
puts "in foo"
s = yield
puts "s = #{s}"
return 2
end
r = bar
in foo
in bar block
=> …Run Code Online (Sandbox Code Playgroud) ruby ×1