Ruby:有没有需要return关键字的情况?
在Ruby中,我们似乎总是可以不使用关键字return,比如:Ruby:有没有需要return关键字的情况?,ruby,return,Ruby,Return,在Ruby中,我们似乎总是可以不使用关键字return,比如: def abc #some calculations a = x + some_stuff end 而abc将返回最后一个表达式的计算结果,这里是(x+一些东西)。那么,在哪些情况下使用退货是必要的,还是强制性的?在某些情况下,使用return关键字会使(或已经使)问题的答案更加优雅吗?在许多情况下,return会派上用场。重要的一点是,它允许您突破您的方法,这是您的示例无法做到的。一个这样的例子 def abc # d
def abc
#some calculations
a = x + some_stuff
end
而
abc
将返回最后一个表达式的计算结果,这里是(x+一些东西)。那么,在哪些情况下使用退货是必要的,还是强制性的?在某些情况下,使用return关键字会使(或已经使)问题的答案更加优雅吗?在许多情况下,return
会派上用场。重要的一点是,它允许您突破您的方法,这是您的示例无法做到的。一个这样的例子
def abc
# do some stuff
return result if desired_flag
raise "undesired"
end
在上面的示例中,在理想情况下,该方法将始终返回一些值。但是,如果不发生这种情况,它将引发一个错误 以下是一些我认为返回有用的情况。 1) 使用特定构造时,该构造具有默认返回值,但您希望返回其他值
[1, 2, 3, 4].each do |element|
return element if x.include?(element ** 3)
end
2) 当你想突破你的方法时,就像
def some_func
return nil if failed_some_early_check
# function code
@answer # returns the list
end
3) 用于记录目的
4) 在编写过程方法时,如果方法的副作用比返回值更重要,实际上为了防止人们使用中间状态值(ab),必须返回nil(当然还有其他方法)
……但在所有这些情况下,都不强制使用return。除非需要,否则它如何优于
提出“不希望的”\u标志;结果
?@mudasobwa如果在引发错误之前需要进行其他计算或更新实例变量或日志,或执行所有这些的组合,该怎么办?我再次知道,即使这些事情也可以通过多种其他方式来完成,也许可以创建不同的方法,但这只是一个使用return的例子。早期的return
作为该方法的第一行是有意义的。这就是为什么,显然,它被称为早期返回。意识到这一事实,return
实际上是从周围的方法返回的,而不仅仅是从lambda返回的。对于第一个示例,最好在最后一行中使用break元素
return
,这与所有ruby风格的指南相矛盾。使用nil
而不是最后一行中的return nil
。我不明白“3)for documentation purposes”是什么意思。这就是说,只有一个关于提前返回的正确而有意义的例子(2),它是@shivam答案的精确副本。投了否决票。我打字很慢,所以@shivam发布时我还在打字,只是想记录一个答案。我刚接触ruby(才10天),感觉好像有一些更有经验的人在谈论。谢谢你的链接。我将OP标记为重复。我认为我的问题与前面的问题不同。我编辑它试图进一步澄清。
def side_effect
#computations on private stuff
return nil
end