Ruby:有没有必要使用return关键字的情况?

时间:2016-03-04 07:33:11

标签: ruby return

在Ruby中,似乎我们总能在不使用关键字return的情况下顺利过关:

def abc
  #some calculations
  a = x + some_stuff
end

abc将返回最后一个表达式计算的内容,这里它将是(x + some_stuff)。那么,是否有必要使用或必须使用返回?在某种情况下,使用return关键字会使问题的答案变得更优雅(或已经使得问题更优雅吗?)

2 个答案:

答案 0 :(得分:1)

return可能会有很多案例。重要的是它允许你打破你的方法,这是你的例子所不能做到的。一个这样的例子

def abc
 # do some stuff
 return result if desired_flag
 raise "undesired"
end

在上面的例子中,在理想情况下,该方法将始终返回一些值。但是,如果没有发生,则会引发错误。

答案 1 :(得分:-1)

这些是我觉得回归会很有用的几种情况。 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(有当然还有其他方法。)

def side_effect
  #computations on private stuff
  return nil
end

.....但在这些案例中都没有必要使用返回。