2011-05-25 20 views

Respuesta

16
if (3..9).include? x 
    # whatever 
end 

Como anotación al margen, también se puede utilizar el operador igual triple para los rangos:

if (3..9) === x 
    # whatever 
end 

Esto permite que se utilizan en las declaraciones de casos, así:

case x 
    when 3..9 
    # Do something 
    when 10..17 
    # Do something else 
end 
+0

¡el triple igual es el atajo que estaba buscando en este caso particular! ¡Gracias! – jpwynn

7
do_something if (3..9).include?(x) # inclusive 
do_something if (3...10).include?(x) # inclusive start, exclusive end 

Ver la clase Range; puedes leer una introducción a ellos hosted on my website.

+0

usa rango> http://www.ruby-doc.org/core/classes/Range.html – eveevans

+0

muchas gracias. y su sitio web es un recurso excepcional que no sabía! – jpwynn

+2

Cuidado con 'Range # include?'. Evalúa * cada * elemento en el rango si el rango no es numérico. '(" aaaaaa ".." zzzzzz "). include? (" zzzzzz ")' ya lleva ** 2 minutos ** en mi sistema. Para enteros, como dice la pregunta, no es problema sin embargo. – molf

0

Algo como esto ?

do_something if (3..9) === x 

o

r = 3..9 
if r === x 
    . . . 
Cuestiones relacionadas