return
和只放一个变量有什么不同:
不退货
def write_code(number_of_errors)
if number_of_errors > 1
mood = "Ask me later"
else
mood = "No Problem"
end
mood
end
返回
def write_code(number_of_errors)
if number_of_errors > 1
mood = "Ask me later"
else
mood = puts "No Problem"
end
return mood
end
发布于 2013-07-27 23:11:48
Ruby总是返回!最好的方法是
def write_code(number_of_errors)
(number_of_errors > 1)? "ERROR" : "No Problem"
end
这意味着如果number_of_errors >1,它将返回ERROR,否则No Problem
发布于 2013-12-09 12:27:22
它漂亮的ruby提供了不显式指定return语句的良好特性,但我只是觉得,作为一个编程标准,人们应该始终努力在需要的地方指定"return“语句。这有助于使代码对于来自不同背景的人来说更具可读性,例如C++,Java,PHP等,并学习ruby。"return“语句不会有任何坏处,所以为什么要跳过从函数返回的传统和更标准的方式呢?
发布于 2019-08-13 02:08:00
对于那些来自其他语言的人,有一个小小的警告。假设您有一个类似于OP的函数,并且您使用"last thing computed“规则自动设置您的返回值:
def write_code(number_of_errors)
if number_of_errors > 1
mood = "Ask me later"
else
mood = "No Problem"
end
end
假设您添加了一个调试(或日志记录)语句:
def write_code(number_of_errors)
if number_of_errors > 1
mood = "Ask me later"
else
mood = "No Problem"
end
puts "### mood = #{mood}"
end
现在猜猜发生了什么。您已经破坏了代码,因为puts
返回nil,nil现在成为函数的返回值。
解决方案是养成总是显式地将返回值放在最后一行的习惯,就像OP所做的那样:
def write_code(number_of_errors)
if number_of_errors > 1
mood = "Ask me later"
else
mood = "No Problem"
end
puts "### mood = #{mood}"
mood
end
https://stackoverflow.com/questions/4601498
复制相似问题