La mejor forma en que puedo describir lo que estoy buscando es mostrarle el código fallido que he probado hasta ahora:
case car
when ['honda', 'acura'].include?(car)
# code
when 'toyota' || 'lexus'
# code
end
Tengo alrededor de 4 o 5 when
situaciones diferentes que deberían ser activadas por aproximadamente 50 valores posibles diferentes de car
. ¿Hay alguna manera de hacer esto con case
bloques o debería intentar un if
bloque masivo ?
when "toyota", "lexus"
, me sale:unexpected tSTRING_BEG, expecting keyword_do or '{' or '(' (SyntaxError)
. Sin embargo, cuando escribo esto:when "toyota","lexus"
funciona. La única diferencia es un espacio después de la coma.or
o||
aquí porquewhen
toma una serie de expresiones separadas por comas a la derecha, no un solo identificador. Debido a esto, si lo hubiera hechowhen a or b
, no está claro si esto debe tomarse como el equivalente dewhen a, b
owhen (a or b)
, el último de los cuales evalúa la expresióna or b
primero antes de arrojarla al cuándo. Es más sorprendente y menos fácil de manejar que el lenguaje tenga tokens que cambian el comportamiento en función del contexto, y luego no podría usar unaor
expresión real en el lado derecho de un momento.