【发布时间】:2016-09-24 17:37:46
【问题描述】:
考虑以下两个代码示例:
1
# Implicit Return
def yo
'swag', 'yolo'
end
whaat, ya = yo
puts ya
puts whaat
2
# Explicit Return
def yo
return 'swag', 'yolo'
end
whaat, ya = yo
puts ya
puts whaat
第一个示例返回此错误:syntax error, unexpected ',', expecting keyword_end,第二个示例的工作原理就像一个冠军。
所以,这让我很好奇,因为我知道 Ruby 中有很多快捷方式(成语)(例如 2 + 2 实际上是 2.+(2) ),如果某些东西不能正常工作,请务必在语法中更清楚并使用成语出去。
因此,我的问题是 Ruby 如何在幕后处理 returns 对我来说这不应该引发错误?
【问题讨论】:
-
'swag', 'yolo'不是有效代码并引发异常。在#2'swag', 'yolo'是参数。 -
好吧,不过这不是我的问题。我的问题是 Ruby 如何在幕后处理返回,这不应该引发错误?我知道示例 1 无效。我想知道幕后发生了什么,因为隐式返回在 Ruby 中有效,并且此代码仅在我显式返回值时才有效。
-
我认为示例 1 也不被视为返回。
-
@cameck:隐式返回仅仅意味着返回最后一个表达式。但是您的代码在语法上无效,
a, b根本不是有效的表达式。