2011-11-21 10 views
10

quiero comprender una porción de código que encontré en Google:¿Cuál es el significado de i.to_s en Ruby?

i.to_s 

En el código i anterior es un número entero. Según mi entendimiento, i se está convirtiendo en una cadena. ¿Es eso cierto?

+1

Usted suposición es correcta, 'método to_s' regresa representación de cadena de un objeto (en este caso del número I' '). Pero para ese tipo de preguntas, sugiero usar Ruby [documentación] (http://www.ruby-doc.org/). Puede encontrar documentación para cada método de la biblioteca estándar allí. –

+0

gracias realmente comprensible –

Respuesta

20

Mejor decir que esta es una expresión que devuelve la representación de cadena del entero i. El entero en sí no cambia. #pedante.

En IRB

>> 54.to_s 
=> "54" 
>> 4598734598734597345937423647234.to_s 
=> "4598734598734597345937423647234" 
>> i = 7 
=> 7 
>> i.to_s 
=> "7" 
>> i 
=> 7 
2

Eso es correcto. to_s convierte cualquier objeto en una cadena, en este caso (probablemente) un número entero, ya que la variable se llama i.

6

Como se observa en las otras respuestas, llamando .to_s en un entero, se devolverá la representación de cadena de ese entero.

9.class   #=> Fixnum 
9.to_s   #=> "9" 
9.to_s.class #=> String 

Pero también se puede pasar un argumento a .to_s para cambiarlo desde la base por defecto = 10 a cualquier cosa, desde la base 2 a base 36. Aquí está la documentación: Fixnum to_s. Así, por ejemplo, si desea convertir el número 1024 y su equivalente en binario (también conocido como Base 2, que utiliza sólo "1" y "0" para representar cualquier número), que podría hacer:

1024.to_s(2) #=> "10000000000" 

La conversión a Base 36 puede ser útil cuando desee generar combinaciones aleatorias de letras y números, ya que cuenta usando cada número del 0 al 9 y luego cada letra de la a la z. Base 36 explanation on Wikipedia. Por ejemplo, el siguiente código le dará una cadena aleatoria de letras y números de longitud 1 a 3 caracteres de largo (cambio del 3 a lo largo de la cuerda máximo que desea, lo que aumenta las posibilidades de combinación):

rand(36**3).to_s(36) 

Para Entienda mejor cómo se escriben los números en los diferentes sistemas base, ponga este código en irb, cambie el 36 en el paréntesis para el sistema base sobre el que desea obtener información. La copia impresa resultante contará de 0 a 35 en el que el sistema jamás base que eligió

36.times {|i| puts i.to_s(36)} 
Cuestiones relacionadas