Dupliquer possible:
qu'est-ce que signifie en rubis?) ==
Pardonnez-moi s'il s'agit d'une nouvelle question, mais je lisez un livre sur Rails Où l'auteur a utilisé cette expression dans une méthode d'assistance:
@current_user ||= User.find_by_id(session[:user_id])
Est-ce que cette utilisation de tuyaux doubles est-elle encore une boolean OR)?
Si oui, comment ça marche?
C'est une affectation conditionnelle. De ici :
x = find_something() #=>nil
x ||= "default" #=>"default" : value of x will be replaced with "default", but only if x is nil or false
x ||= "other" #=>"default" : value of x is not replaced if it already is other than nil or false
Le code foo ||= bar
Est presque équivalent à foo = foo || bar
. IN Ruby= (comme dans de nombreuses langues, comme JavaScript ou io) Les opérateurs booléens sont des opérateurs de "garde". Au lieu de toujours retourner true
ou false
, ils évaluent à la valeur du premier opérande qui évalue à une valeur "vérité".
Par exemple, ce code foo = 1 || delete_all_files_from_my_computer()
_ ne supprimera rien: FOO sera défini sur 1
Et le deuxième opérande ne sera même pas évalué.
Dans Ruby, les seules valeurs "non-vérité" sont nil
et false
. Donc le code foo ||= bar
N'évaluera que bar
_ et définir foo
au résultat si foo
est nil
ou false
.
En tant que variables d'instance par défaut sur nil
lorsqu'il n'est pas défini, le code comme @foo ||= bar
Est un fichier commun Ruby idiom pour définir la variable d'instance s'il n'a pas déjà été défini.