Quelle est la différence entre le et
opérateurs dans Ruby ? Ou est-ce juste préférence ?
- Différence entre "et" et && en Ruby? (5 réponses )
Réponses
Trop de publicités?C'est une question de priorité des opérateurs.
||
a une priorité plus forte que l' or
.
Donc, entre les deux vous avez d'autres opérateurs, y compris ternaire (? :
) et d'affectation (=
) alors, qui que vous choisissez peuvent affecter le résultat de déclarations.
Voici un rubis de la priorité de l'opérateur de la table.
Voir cette question pour un autre exemple d'utilisation and
/&&
.
Comme d'autres l'ont déjà expliqué, la seule différence est la priorité. Cependant, je tiens à souligner qu'il existe en fait deux différences entre les deux:
-
and
,or
etnot
ont beaucoup plus faible l'emporte&&
,||
et!
-
and
etor
ont la même priorité, tout en&&
a plus de priorité que||
En général, il est de bon ton d'éviter l'utilisation de l' and
, or
et not
et l'utilisation &&
, ||
et !
à la place. (Les Rails les développeurs du noyau, par exemple, de rejeter les patches qui utilisent le mot-clé formulaires à la place de l'opérateur formes.)
La raison pour laquelle ils existent, n'est pas pour les formules booléennes, mais pour le contrôle de flux. Ils ont fait leur chemin dans Ruby via Perl est bien connu, do_this or do_that
idiome, où do_this
retours false
ou nil
si il y a une erreur et alors seulement est - do_that
exécuté à la place. (De même, il est également l' do_this and then_do_that
idiom.)
Exemples:
download_file_via_fast_connection or download_via_slow_connection
download_latest_currency_rates and store_them_in_the_cache
Parfois, cela peut rendre le flux de contrôle un peu plus à l'aise que d'utiliser if
ou unless
.
Il est facile de voir pourquoi, dans ce cas, les exploitants ont le "mal" (c'est à dire identique) priorité: ils ne montrent jamais ensemble dans la même expression de toute façon. Et quand ils ne montrent ensemble, en général, vous voulez qu'il soit évalué simplement de gauche à droite.
Les deux « ou » et « || » avoir la valeur true si les deux opérandes est vrai. Ils évaluent leur second opérande uniquement si la première est false.
Comme avec « et », la seule différence entre « ou » et « || » est leur priorité.
Juste pour rendre la vie intéressante, « et » et « ou » ont la même priorité, alors que « & & » a une priorité plus élevée que « || ».