【发布时间】:2014-03-09 20:51:30
【问题描述】:
我注意到如果我在块内使用关键字return,整个方法都会返回。我发现在 ruby 中,您可以选择使用 return 关键字感到困惑 - 就像:“那么这个东西返回的是什么,如果有的话?开发人员是否打算让这个方法返回一些东西?”所以我喜欢在块内使用return,例如:
def my_method
items = [ 1, 2, 3 ]
items_times_ten = items.collect { |o|
#multiple
#lines
#of
#code ...
return o * 10 # Ruby exits the method at this point.
}
return items_times_ten #This is never reached.
end
我明白为什么我不需要从街区返回,但如果我的街区更复杂,它似乎有助于清晰。我的问题是,为什么 Ruby 会假设我想将控制权返回两个级别?
如果我的假设不正确,请纠正我。我只是想了解以这种方式处理控制的原因。
【问题讨论】:
-
我认为这个答案可能会有所帮助stackoverflow.com/a/2325712/1856239
-
我编辑了整个问题。我不知道为什么这最初让我感到惊讶——我来自 C# 背景,如果我从
for循环中调用return(这是一件奇怪的事情),该方法将返回!这里的想法相同。我想我只是因为试图解决问题而感到恼火而被赶上了。 -
由于 JavaScript 和 Ruby 闭包之间可能存在一些相似之处,因此这个问题并非完全不成立。在 C# 匿名委托中调用
return也会在方法中保持控制......暂时不要敲自己!
标签: ruby