首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Ruby的返回点是什么?

Ruby的返回点是什么?
EN

Stack Overflow用户
提问于 2011-01-05 14:42:48
回答 3查看 72.7K关注 0票数 82

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
EN

回答 3

Stack Overflow用户

发布于 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

票数 4
EN

Stack Overflow用户

发布于 2013-12-09 12:27:22

它漂亮的ruby提供了不显式指定return语句的良好特性,但我只是觉得,作为一个编程标准,人们应该始终努力在需要的地方指定"return“语句。这有助于使代码对于来自不同背景的人来说更具可读性,例如C++,Java,PHP等,并学习ruby。"return“语句不会有任何坏处,所以为什么要跳过从函数返回的传统和更标准的方式呢?

票数 3
EN

Stack Overflow用户

发布于 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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4601498

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档