关于以下代码:
if a == 1
return "a is one"
end
Run Code Online (Sandbox Code Playgroud)
当我在IRB中执行它时,它给了我
LocalJumpError:意外
return
但是当我在Rails应用程序中添加相同的代码时,它运行完美.
我是否真的必须避免从块内部返回显式值?为什么Rails应用程序没有问题呢?
在控制台中单独运行此代码时,无法返回范围.一旦将其放入方法中,它将按预期工作.
没有范围的示例:
irb(main):001:0> if a = 1
irb(main):002:1> return "a is one"
irb(main):003:1> end
LocalJumpError: unexpected return
from (irb):2
from /Users/dougal/.rbenv/versions/1.9.3-p194/bin/irb:12:in `<main>'
Run Code Online (Sandbox Code Playgroud)
示例作用于方法内的示例:
irb(main):001:0> def run
irb(main):002:1> if a = 1
irb(main):003:2> return "a is one"
irb(main):004:2> end
irb(main):005:1> end
=> nil
irb(main):006:0> puts run
a is one
=> nil
Run Code Online (Sandbox Code Playgroud)