我碰到紅寶石升技的例子你爲什麼要用!!運營商
def role?(role)
return !!self.roles.find_by_name(role.to_s.camelize)
end
來到你爲什麼會用不完!!
?是不是相同
return self.roles.find_by_name(role.to_s.camelize)
是否添加雙重感嘆號添加評價的東西?
我碰到紅寶石升技的例子你爲什麼要用!!運營商
def role?(role)
return !!self.roles.find_by_name(role.to_s.camelize)
end
來到你爲什麼會用不完!!
?是不是相同
return self.roles.find_by_name(role.to_s.camelize)
是否添加雙重感嘆號添加評價的東西?
如果您只需要布爾值而不是對象,則可以使用它。除boolean false
之外的任何非零對象都代表true
,但是,您也會返回數據。通過雙重否定它,你返回一個合適的布爾值。
這是一個雙重否定,導致一個布爾值:
irb(main):016:0> !1
=> false
irb(main):013:0> !0
=> false
irb(main):014:0> !nil
=> true
irb(main):015:0> !!nil
=> false
是在你的情況,你可以肯定的是,函數返回只有真或假。如果你會忽略!你會返回一個角色列表
免責聲明:不是一個紅寶石程序員,但刺傷了這一點。
!!
,double bang或「not not」,可能會將該值轉換爲布爾值。其中一個!
返回布爾值相反的值,之後的另一個值將會將其翻轉爲正常的布爾值。
用這個小動作,你得到一個表達式的實際布爾值,例如:
!! 3
=> true
!! nil
=> false
!! 0
=> true
在Ruby中任何不爲零還是假的,是真的!
在您的示例代碼這一招可以確保您永遠不會返回別的
但真或假
,如果您省略了! ,您將返回角色列表,或者無
對於文化,請注意'!!'運算符通常稱爲「雙重運算符」。 –
另請注意,'return'和'self.'在這裏都是多餘的。 –
@Kernald - 嗯,沒有!運營商。 – steenslag