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'