在Ruby中,为什么会这样!nil return => true?

rpe*_*rce 0 ruby null object

如果你这样做:

    $ nil
    => nil
Run Code Online (Sandbox Code Playgroud)

但是如果你这样做:

    $ !nil
    => true
Run Code Online (Sandbox Code Playgroud)

为什么!是真的吗?

Jor*_*ing 13

当您!在Ruby中的对象上使用布尔运算符时,必须首先将对象在后台转换为布尔值(truefalse).Ruby中的每个对象都是"truthy"或"falsy",而Ruby的实现者选择nil是假的,所以!nil相当于!false,评估为true.

  • 当用作表达式时,它可能更容易说"评估为真"或"评估为假".这种行为允许`!!`用于将事物渲染为布尔值.`!nil`是'true`和`!! nil`是'false`. (3认同)