2010-12-09 3 views
1

Possible en double:
What does !! mean in ruby?Que fait !! some_object?

ce que cette fonction est en train de faire?

def current_product? 
    !!current_product 
end 

N'est-ce pas un double négatif?

+1

Dupliquer de [Que fait !! signifie en ruby?] (http://stackoverflow.com/questions/524658/what-does-mean-in-ruby). –

+0

La même chose, comme dans d'autres langues ... – Nakilon

Répondre

5

!! est essentiellement un casting à booléens. Si current_product est truey, !current_product est false et !!current_product est true, et vice versa. C'est à dire. il convertit valeurs truey à true et falsy valeurs à false.

1

C'est un modèle que vous verrez dans toutes les langues où chaque objet a une valeur de vérité, mais il y a des canoniques booléens (qu'ils soient appelés True et False, 1 et 0, 1 et "", t et nil , peu importe). !!x est essentiellement un "cast à booléen", en ce que !!x a la même valeur de vérité que x, mais !!x sera toujours l'une des valeurs true/false canoniques, au lieu de toute ancienne valeur true/false.