Ruby 你为什么要用!!操作人员
我在一个例子中遇到了一点rubyRuby 你为什么要用!!操作人员,ruby,operators,Ruby,Operators,我在一个例子中遇到了一点ruby def role?(role) return !!self.roles.find_by_name(role.to_s.camelize) end 你为什么要使用?是不是跟 return self.roles.find_by_name(role.to_s.camelize) 添加双感叹号是否会给计算增加一些内容?如果只需要布尔值,而不需要对象,则可以使用它。除布尔值false之外的任何非nil对象都表示真,但是,您也会返回数据。通过双反运算,您将返回一个
def role?(role)
return !!self.roles.find_by_name(role.to_s.camelize)
end
你为什么要使用代码>?是不是跟
return self.roles.find_by_name(role.to_s.camelize)
添加双感叹号是否会给计算增加一些内容?如果只需要布尔值,而不需要对象,则可以使用它。除布尔值false
之外的任何非nil对象都表示真
,但是,您也会返回数据。通过双反运算,您将返回一个正确的布尔值。这是一个双反运算,其结果是布尔值:
irb(main):016:0> !1
=> false
irb(main):013:0> !0
=> false
irb(main):014:0> !nil
=> true
irb(main):015:0> !!nil
=> false
是的,在您的情况下,您可以确保函数只返回true或false。如果你愿意省略!!您将返回一个角色列表免责声明:不是ruby程序员,但尝试过这一点
、double bang或“not not”可能会将值转换为布尔值。一个
返回布尔值的相反值,然后另一个砰的一声将其翻转为正常的布尔值。通过这个小技巧,您可以得到表达式的实际布尔值,例如:
!! 3
=> true
!! nil
=> false
!! 0
=> true
在Ruby中,任何不是零或假的东西都是真的
在您的示例代码中,此技巧确保您永远不会返回任何其他内容
但是是真是假
如果你想省去这个,您将返回角色列表,或者对于区域性返回nil,请注意代码>操作符通常被称为“双重爆炸操作符”。还要注意,返回
和self.
在这里都是多余的。@Kernald-hmm,没有!!操作人员