2016-04-05 56 views
3

!!在以下方法中的含義是什麼?!! (double bang)的含義

def include?(record) 
    [email protected]?(record) 
end 
+0

它被稱爲雙爆(!!)。 –

+0

'!!'將「truthy」值(除了'nil'和'false'之外的所有值)轉換爲'true'和'falsy‖值('nil'或'false')爲'false'。 '!! x'的意思是'!(!x)'。如果'x'是真的,'!x'是'false';如果'x'是假的,'!x'是真的。第一個'!'然後將'false'轉換爲'true'並將'true'轉換爲'false'。例如,'!7 =>!(!7)=>!false => true'和'!! nil =>!(!nil)=>!true => false'。 –

+0

你已經刪除了最近的一個問題,看看[這裏](https://jsfiddle.net/m9gmjc2w/);) –

回答

6

它蒙上了可變進boolean類型並確定其truthy或falsy值

例如: -

# Numbers... 
!!1 # => true 
!!0 # => false 

# Numbers as strings... 
!!'1' # => true 
!!'0' # => false 

# Truthy strings (case insensitive)... 
!!'true' # => true (alias: 't') 
!!'false' # => false (alias: 'f') 
!!'yes' # => false (alias: 'y') 
!!'no' # => false (alias: 'n') 

# Booleans... 
!!true # => true 
!!false # => false 

# Nil... 
!!nil # => false 
3

它可以幫助您獲得布爾結果。

實施例:

a = nil 
!a 
#=> true 
!!q 
#=> false 

同樣

a = 1 
!a 
#=> false 
!!a 
#=> true 
0

雙感嘆號會將結果轉換爲布爾值,因此,在這種情況下,如果@assication.include?(record)返回nil將會轉換爲false

相關問題