考虑以下两个代码示例:
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
对于我来说这不应该引发错误?
最佳答案
方法(和 block 、类定义和模块定义)隐式返回最后计算的表达式。 a, b
根本不是一个有效的表达式,它甚至在句法上都是无效的。 return a, b
是一个有效的表达式:您将两个参数传递给 return
关键字。传递多个参数并省略括号是完全合法的。
出于类似的原因,foo(a, b)
有效,但 foo (a, b)
无效:前者将两个参数传递给 foo
,后者将一个参数 (a, b)
传递给 foo
,这在语法上是无效的。
关于ruby - Ruby 中的隐式返回在返回两个值时返回错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39679162/