En Ruby, la condición y la parte then
de un if
La expresión debe estar separada por un separador de expresiones (es decir, ;
o una línea nueva) o la palabra clave then
.
Entonces, todo esto funcionaría:
if @item.rigged then 'Yes' else 'No' end
if @item.rigged; 'Yes' else 'No' end
if @item.rigged
'Yes' else 'No' end
También hay un operador condicional en Ruby, pero eso es completamente innecesario. El operador condicional se necesita en C, porque es un operador: en C, if
es una declaración y, por lo tanto, no puede devolver un valor, por lo que si desea devolver un valor, necesita usar algo que puede devolver un valor. Y las únicas cosas en C que pueden devolver un valor son funciones y operadores, y dado que es imposible hacer que if
sea una función en C, necesita un operador.
En Ruby, sin embargo, if
es una expresión. De hecho, todo es una expresión en Ruby, por lo que ya puede devolver un valor. No es necesario que el operador condicional incluso exista, y mucho menos utilícelo.
Por cierto: se acostumbra a métodos de nombres que se utilizan para hacer una pregunta con un signo de interrogación al final, de esta manera:
@item.rigged?
Esto muestra otro problema con el uso del operador condicional en Ruby:
@item.rigged? ? 'Yes' : 'No'
Es simplemente difícil de leer con los múltiples signos de interrogación que se cierran entre sí.
He vuelto a esta respuesta innumerables veces para la sintaxis ... ¡gracias! –
Si la condición finaliza en un '?' ¿es posible soltarlo? Es decir, si la condición es @ customer.sales.present? puedes soltar el '?'? ... no te preocupes Encontré un código que tenía y lo probé. La respuesta es 'no' –
@JayKilleen Estás en lo correcto. Ruby tiene que ver con trucos ingeniosos, pero es así de inteligente (: –