Une ligne si l'instruction ne fonctionne pas
<%if @item.rigged %>Yes<%else%>No<%end%>
Je pensais à quelque chose comme ça?
if @item.rigged ? "Yes" : "No"
Mais ça ne fonctionne pas. Ruby ||=
mais je ne suis pas encore sûr de savoir comment utiliser cette chose.
- Il est clair que la ligne ne fonctionne pas (ou deux ?)
Vous devez vous connecter pour publier un commentaire.
Supprimer
if
deif @item.rigged ? "Yes" : "No"
Opérateur ternaire est de forme
condition ? if_true : if_false
En Ruby, la condition et le
then
le cadre d'unif
expression doivent être séparés par un séparateur d'expression (c'est à dire;
ou un saut de ligne) ou lethen
mot-clé.Ainsi, l'ensemble de ces travaux:
Il y a aussi un opérateur conditionnel en Ruby, mais c'est totalement inutile. L'opérateur conditionnel est nécessaire en C, car c'est un opérateur: en C,
if
est une déclaration et ne peut donc pas renvoyer une valeur, donc si vous voulez retourner une valeur, vous avez besoin d'utiliser quelque chose qui peut renvoyer une valeur. Et les seules choses en C qui peut renvoyer une valeur sont les fonctions et les opérateurs, et depuis il est impossible de faireif
une fonction en C, vous avez besoin d'un opérateur.En Ruby, cependant,
if
est une expression. En fait, tout est une expression en Ruby, il déjà peut retourner une valeur. Il n'est pas nécessaire pour l'opérateur conditionnel à même existent, sans parler de l'utiliser.BTW: il est d'usage de nommer les méthodes qui sont utilisées pour poser une question avec un point d'interrogation à la fin, comme ceci:
Cela montre un autre problème avec l'aide de l'opérateur conditionnel en Ruby:
Il est tout simplement difficile à lire, avec de multiples points d'interrogation proches les uns des autres.
;
explication.Une seule ligne si:
Votre cas:
"No" unless @item.rigged
pour empêcher la!
nil
au lieu de'Yes'
siitem.rigged
est vrai. Une seule ligne si ou si les instructions de retournil
si la condition n'est pas remplie.De ce que je sais
3 one-liners
a = 10 if <condition>
exemple:
a = 10 unless <condition>
exemple:
a = <condition> ? <a> : <b>
exemple:
J'espère que cela aide.
À la fois le shell et C d'une ligne de constructions de travail (ruby 1.9.3p429):
si d'autre condition peut être couvert avec de l'opérateur ternaire
Pour des raisons de simplicité, Si vous devez par défaut à une valeur si nul que vous pouvez utiliser:
Vous pouvez Utiliser ----
(@élément.truqué) ? "Oui" : "Non"
Si @de l'élément.truqué est vrai, il sera de retour "Oui", sinon il sera de retour "Non"