考虑以下两个Ruby片段:
def foo
@foo ||= begin
get_the_foo
end
end
VS
def foo
@foo ||= (
get_the_foo
)
end
结果是一样的。就个人而言,我更喜欢第二种,因为begin
让我期待异常处理。
这些除了风格之外还有什么不同吗?例如,性能,范围,记忆等?
我的猜测是begin
更重'因为它可以做得更多。
答案 0 :(得分:0)
虽然我不认为两种风格之间存在显着差异,但我认为真正的问题应该是"使用多行计算产生返回值是一个好主意内联表达?"。
Ruby的条件赋值快捷方式已经很难阅读了。我很肯定,如果您需要多个步骤来获取值,您应该将它们提取到方法中,然后只需调用@foo ||= method_to_get_the_foo
。