¿Se supone que el método rand de Ruby acepta objetos Range?

Solo he visto algo como rand(1..5) trabajo en MRI ruby ​​1.9.3 (no he probado 1.9.2). Jruby no lo admite, incluso en el modo 1.9: genera un TypeError.

Incluso ruby-doc no menciona que los rangos son compatibles. ¿Cuál es el comportamiento oficial?

ACTUALIZACIÓN

Bueno, como señalan las respuestas y los comentarios, solo 1.9.3 lo admite. Jruby solo está en 1.9.2.

preguntado el 12 de junio de 12 a las 21:06

también TypeError con ruby ​​"estándar" 1.9.2 -

Intenté usar diferentes versiones de Ruby a través de rvm. Parece funcionar solo en el caso de 1.9.3 -

2 Respuestas

Los docs do decir que es compatible

Si max es Range, devuelve un número pseudoaleatorio donde range.member(number) == true.

También está en el 1.9.3 cambios

Respondido el 12 de junio de 12 a las 21:06

Ja, tonto de mí por no leer la descripción del método. Acabo de mirar el nombre del argumento y el valor predeterminado (max=0). Aceptaré esto una vez que SO me lo permita. - Kelvin

Parece ser nuevo, el 1.9.2 documentos no lo menciones - Stefan

Copiar y pegar textualmente de documentos

If max is Range, returns a pseudorandom number where range.member(number) == true.
Or else converts max to an integer using max1 = max.to_i.abs.

entonces sí. es compatible con ruby ​​1.9.3

Respondido el 12 de junio de 12 a las 21:06

@Kelvin Claro, adelante. No me importan los puntos tontos. si alguna de mis respuestas ayudó a un alma en este plannet. esa es una razón suficiente para que siga publicando más respuestas #SoloDiciendo :) - Mente curiosa

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.