voglio capire un pezzo di codice che ho trovato in Google:Qual è il significato di i.to_s in Ruby?
i.to_s
Nel codice precedente i
è un intero. Per quanto ne so, i
viene convertito in una stringa. È vero?
voglio capire un pezzo di codice che ho trovato in Google:Qual è il significato di i.to_s in Ruby?
i.to_s
Nel codice precedente i
è un intero. Per quanto ne so, i
viene convertito in una stringa. È vero?
È meglio dire che questa è un'espressione che restituisce la rappresentazione in stringa dell'intero i
. L'intero stesso non cambia. #pedante.
In IRB
>> 54.to_s
=> "54"
>> 4598734598734597345937423647234.to_s
=> "4598734598734597345937423647234"
>> i = 7
=> 7
>> i.to_s
=> "7"
>> i
=> 7
Ciò è corretto. to_s
converte qualsiasi oggetto in una stringa, in questo caso (probabilmente) un numero intero, poiché la variabile è denominata i
.
Come osservato nelle altre risposte, chiamando .to_s su un numero intero restituirà la rappresentazione di stringa di quel numero intero.
9.class #=> Fixnum
9.to_s #=> "9"
9.to_s.class #=> String
Ma si può anche passare un argomento per .to_s per cambiare dalla base di default = 10 per qualsiasi cosa, da base 2 a base 36. Ecco la documentazione: Fixnum to_s. Così, per esempio, se si voleva convertire il numero 1024 a E 'equivalente in formato binario (alias Base 2, che utilizza solo "1" e "0" per rappresentare qualsiasi numero), si potrebbe fare:
1024.to_s(2) #=> "10000000000"
La conversione in Base 36 può essere utile quando si desidera generare combinazioni casuali di lettere e numeri, poiché conta utilizzando ogni numero da 0 a 9 e quindi ogni lettera dalla a alla z. Base 36 explanation on Wikipedia. Ad esempio, il seguente codice vi darà una stringa casuale di lettere e numeri di lunghezza da 1 a 3 caratteri (cambiare la 3 a qualsiasi lunghezza massima della stringa che si desidera, che aumenta le possibili combinazioni):
rand(36**3).to_s(36)
Per capire meglio come sono scritti i numeri nei diversi sistemi di base, inserire questo codice in irb, cambiando il 36 tra parentesi per il sistema di base che si desidera conoscere. La stampa risultante conterà da 0 a 35 in cui il sistema di base mai si è scelto
36.times {|i| puts i.to_s(36)}
Indovinare è giusto, 'metodo to_s' ritorna rappresentazione di stringa di un oggetto (in questo caso il numero di' I'). Ma per quel tipo di domande suggerirei di usare Ruby [documentazione] (http://www.ruby-doc.org/). È possibile trovare la documentazione per ogni metodo dalla libreria standard lì. –
grazie davvero comprensibile –