差异 - 除非/如果

geo*_*ich 38 ruby

任何人都可以解释我的区别if,并unless和何时使用它?

Seb*_*olm 65

unless只是否定了if.也就是说,如果条件不为真,它会执行它包含的任何内容.

unless foo?
    # blabla
end
Run Code Online (Sandbox Code Playgroud)

简单来说就是

if !foo?
    # blabla
end
Run Code Online (Sandbox Code Playgroud)

这一切都是你发现更容易阅读的问题.

另请参阅:除非,滥用Ruby条件

  • 出于某种原因,我发现阅读“unless”语句非常令人困惑。还有其他人有同样的情况吗? (2认同)

cal*_*syr 9

当有一个参数时,使用'除非'对我来说是直截了当的,但是当有几个参数时我觉得它很混乱.而当使用||而不是&&.

"除非这个或那个"对我的大脑来说更难."如果不是这个而不是那个"更容易.

如果我使用它,将来很难维护这段代码.所以我没有.


Ole*_*ann 7

unless简直相当于if not.当你使用哪个是个人喜好.