你为什么要用!! 操作者

Ben*_*ate 11 ruby operators

我在一个例子中遇到了红宝石

def role?(role)
  return !!self.roles.find_by_name(role.to_s.camelize)
end
Run Code Online (Sandbox Code Playgroud)

你为什么要用!!?是不是一样的

 return self.roles.find_by_name(role.to_s.camelize)
Run Code Online (Sandbox Code Playgroud)

添加双重感叹号是否会为评估添加一些内容?

Fem*_*ref 16

如果您只想要布尔值而不是对象,则使用它.除了boolean false表示之外的任何非零对象true,您也会返回数据.通过双重否定它,您返回一个适当的布尔值.


Lew*_*ton 7

免责声明:不是红宝石程序员,而是对此有所了解.

!!,double bang或"not not",可能会将值转换为布尔值.一个!返回布尔反对,然后另一个bang将其翻转为其正常的布尔值.


Mat*_*att 5

这是一个双重否定,导致一个布尔值:

irb(main):016:0> !1
=> false
irb(main):013:0> !0
=> false
irb(main):014:0> !nil
=> true
irb(main):015:0> !!nil
=> false
Run Code Online (Sandbox Code Playgroud)