当前位置:  开发笔记 > 编程语言 > 正文

带有两个动作的单行`if`返回语句

如何解决《带有两个动作的单行`if`返回语句》经验,为你挑选了2个好方法。

我正在寻找一种优雅的方式将以下if陈述纳入一行:

if var1.nil?
  log("some message")
  return
end

我喜欢if你可以说的右手声明

return if var1.nil?

在这种情况下,我需要两个动作,但以下不起作用:

log("some message") and return if var1.nil?

有没有办法if在一行的右侧执行两个动作(日志消息和返回)?



1> sawa..:

    当你有一个像的方法return,break等等,你可以做(假设你不感兴趣的返回值):

    return log("some message") if var1.nil?
    

    一种天真的通用方式是:

    (log("some message"); return) if var1.nil?
    

    但是,如果你不喜欢括号和分号,那么,这样做:如果and不起作用,那么这意味着第一个表达式的返回值是假的,这意味着or应该工作.

    log("some message") or return if var1.nil?
    

    一般情况下,一个或之间的其他andor将工作,这取决于第一表达的评价值.



2> Sergio Tulen..:

好吧,不依赖于布尔评估,你总是可以这样做:

(log('some message'); return) if var.nil?

但我个人觉得它比多线版本更不易读

if var1.nil?
  log('some message')
  return
end

modifier-if语法的一个问题是当行太长时你甚至可能都没注意到它.注意:

(log('Something really bad happened while you were doing that thing with our app and we are terribly sorry about that. We will tell our engineers to fix this. Have a good day'); return) if var.nil?

推荐阅读
雨天是最美
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有