明确返回函数值的好习惯?

时间:2012-05-10 20:30:43

标签: ruby function return-value

你更喜欢这个:

def add(a, b)
  puts "ADDING #{a} + #{b}"
  return a + b
end

这个?

def add(a, b)
  puts "ADDING #{a} + #{b}"
  a + b
end

5 个答案:

答案 0 :(得分:4)

除非绝对需要,否则Ruby Way™不包含return语句。

我确信有更好的例子,但这是一个简单的例子。

def divide a, b
    return false if b == 0
    a/b
end

值得注意的是,Ruby提供了可选地忽略大量语法的方法。 ()是可选的,除非您将它们嵌套。在许多情况下也可以省略{}

func(5, 5, {:hello => 'world'})
# is the same as
func 5, 5, hello: 'world'

随着时间的推移,您将学到更多快捷方式。

答案 1 :(得分:2)

Style Guide表示省略显式返回

  

避免在不需要的地方返回。

# bad
def some_method(some_arr)
  return some_arr.size
end

# good
def some_method(some_arr)
  some_arr.size
end

答案 2 :(得分:1)

看看这个:http://www.robertsosinski.com/2008/12/21/understanding-ruby-blocks-procs-and-lambdas/

它解释了返回如何在procs,lambdas和blocks上运行。

答案 3 :(得分:0)

这完全取决于具体情况。通常,没有必要明确地说明:rubyists知道最后一个表达式是返回的表达式。然而,在一些罕见的情况下,最后一个表达式并不容易掌握,如在一个交互或一些模糊的结构中,所以它可能是好的。但通常,没有必要。

编辑:

显然,当你试图返回一个不是你方法的最后一个的表达式时,你来使用return。就像使用延迟加载的访问器一样

答案 4 :(得分:0)

return a + b的优点:

  • 可读性
  • 不易出错

缺点:

  • 详细