Ruby 明确返回函数值的良好实践?

Ruby 明确返回函数值的良好实践?,ruby,function,return-value,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 这完全取决于上下文。通常,没有必要显式地将其放入:rubysists知道最后一个表达式是返回的表达式。然而,在一些罕见的情况下,最后一个表达不容易掌握,比如在一个互动或一些模糊的结构中,所以最好把它放进去。但通常情况下,没有必要 编辑: 显

您喜欢这个吗:

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

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

这完全取决于上下文。通常,没有必要显式地将其放入:rubysists知道最后一个表达式是返回的表达式。然而,在一些罕见的情况下,最后一个表达不容易掌握,比如在一个互动或一些模糊的结构中,所以最好把它放进去。但通常情况下,没有必要

编辑:


显然,当您试图返回一个不是方法最后一个部分的表达式时,必须使用return。正如您对延迟加载的访问器所做的那样,
返回a+b

  • 可读性
  • 不易出错
缺点:

  • 冗长的
    • 表示忽略显式返回

      避免在不需要的地方返回


      这是红宝石的方式™ 除非绝对需要,否则不要包含
      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'
      
      你会学到更多的捷径。

      看看这个:


      它解释了return如何在proc、lambda和block上工作。

      我想说省略“return”语句是规范的,但我想看看是否有什么好的理由支持/反对这个约定…@maerics:这就是为什么我发布这个问题进行讨论。明白了。但这并不能真正解释为什么会这样(我已经阅读了链接中的部分)。哈哈。非常正确。我认为Ruby Way的公认答案是关于唯一“真正”的理由。这很公平。我以前是C和C++编程背景,所以最初省略<代码>返回<代码>关键字看起来模糊不清。我同意起初看起来很奇怪,但是你真的学会了爱它。特别是对于lambda函数:)你的意思是当谈到lambda函数时?是的。我在回答中也提供了一个示例。示例
      [1,2,3,4,5]。拒绝{n |返回n>3}
      甚至不起作用,但会引发
      LocalJumpError
      。这不是lambda,而是方法的块参数(基本上是一个proc,而不是lambda)。在end procs和lambdas之间有两个区别,参数检查和能够从中返回。我发现,有时如果最后的表达式有几个位置,我忘记更改其中一个,而我没有使用return来标记它们。
      func(5, 5, {:hello => 'world'})
      # is the same as
      func 5, 5, hello: 'world'