return和变换之间有什么区别,如下所示:
def write_code(number_of_errors)
if number_of_errors > 1
mood = "Ask me later"
else
mood = "No Problem"
end
mood
end
Run Code Online (Sandbox Code Playgroud)
def write_code(number_of_errors)
if number_of_errors > 1
mood = "Ask me later"
else
mood = puts "No Problem"
end
return mood
end
Run Code Online (Sandbox Code Playgroud)
Ant*_*sky 114
return 可以让你早点爆发:
def write_code(number_of_errors)
return "No problem" if number_of_errors == 0
badness = compute_badness(number_of_errors)
"WHAT?! Badness = #{badness}."
end
Run Code Online (Sandbox Code Playgroud)
如果number_of_errors == 0,那么"No problem"将立即返回.但是,在方法结束时,正如您所观察到的那样,这是不必要的.
编辑:要证明return立即退出,请考虑以下功能:
def last_name(name)
return nil unless name
name.split(/\s+/)[-1]
end
Run Code Online (Sandbox Code Playgroud)
如果您将此功能称为last_name("Antal S-Z"),则会返回"S-Z".如果你把它称为last_name(nil),它会返回nil.如果return 没有立即中止,它将尝试执行nil.split(/\s+/)[-1],这将引发错误.
dan*_*neu 38
如果它是方法中要执行的最后一行,则不需要使用"return",因为Ruby会自动返回最后一次计算的表达式.
你甚至不需要最终的"情绪",也不需要IF语句中的那些作业.
def write_code(number_of_errors)
if number_of_errors > 1
"ERROR"
else
"No Problem"
end
end
puts write_code(10)
Run Code Online (Sandbox Code Playgroud)
输出:
错误