Ruby 函数的返回值你用 return 吗?

tini8 · 2015年08月10日 · 最后由 shy07 回复于 2015年08月13日 · 6641 次阅读

ruby 默认返回最后一行内容,但我还是习惯用 return 返回内容,不写总觉得怪怪的

一般不写

看起来整齐就写,比如:

def xx
 return 1 if xxx
 return 2 if xxxxx
 return 3 
end

这是个好习惯。不在乎多打 1 个 r tab。

可有可无的东西一律不加

没有歧义的情况下不写。

基本都写,不写心里空空的~

https://ruby-china.org/wiki/coding-style

楼主也可以参考一下 ruby-china wike 上面的 coding-style 其中,有一句

避免在不需要流的控制使用 return

最后一行就不写啊,如果不是最后一行是中间要跳走就得写咯

rubocop 推荐不写 return

我猜 定义方法写括号的的人 def foo() 会写 return, 是不是这样? 😄

#10 楼 @zgm 我定义方法写括号,但不写 return。

能不写就不写

同 hooopo,看起来整齐的情况下会写。

貌似从 php -> ruby 的好像都会遇到这个问题,一般不写~

我 return 只用在打断执行流程的时候。 所以尾行不写。

不写不能解决问题的时候才写。总感觉不写的话,会有种函数式编程的感觉(会有种,这个方法不会改变参数,再次赋值好了)

能不写 return 就不写,除了真的需要强制 return

一般来说 (也可能是我的一厢情愿),根据我理解的 ruby convention,return是用来标示强制返回值,即非正常运行返回 例如

def nullify(list)
  return unless list.respond_to?(:each) #如果list不能调用`each()`,返回`nil`,用`return`强调特殊情况
  # 如果有其他特殊情况,需要返回跟此方法没什么关系的返回值时,用`return`
  list.each { |item| item = nil } 
end

不影响理解的情况下,尽量减少代码量,代码越少越好维护

依我的理解,Ruby 的 return 是用来中断方法执行的,类似 exit 之于线程、break 之于循环 方法默认就有返回值,所以除了用来控制流程,其他情况完全可以不写

需要 登录 后方可回复, 如果你还没有账号请 注册新账号