在Ruby中return的意义是什么?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (36)

return和只是把一个变量挂出去有什么区别?

如下所示:

无return

def write_code(number_of_errors)
  if number_of_errors > 1
     mood = "Ask me later"
  else
     mood = "No Problem"
  end  
  mood
end

return

def write_code(number_of_errors)
  if number_of_errors > 1
    mood =  "Ask me later"
  else
    mood = puts "No Problem"
  end  
  return mood
end
提问于
用户回答回答于

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

如果number_of_errors == 0,那么"No problem"将立即返回。

为了演示return立即退出,请考虑以下功能:

def last_name(name)
  return nil unless name
  name.split(/\s+/)[-1]
end

如果你调用这个函数last_name("Antal S-Z"),它会返回"S-Z"。如果你称之为last_name(nil),它会返回nil。如果return 不立即中止,它会尝试执行nil.split(/\s+/)[-1],这会导致错误。

用户回答回答于

如果它是method中最后一行,使用“return”是不必要的,因为Ruby会自动返回上一个评估过的表达式。

你甚至不需要最终的“mood”,也不需要IF语句中的这些任务。

def write_code(number_of_errors)
    if number_of_errors > 1
       "ERROR"
    else
       "No Problem"
    end  
end

puts write_code(10)

输出:

ERROR

扫码关注云+社区