Uso irb.Creare un intervallo di stringhe dai valori finali
Scrivo il codice qui sotto.
"ax".."bc"
mi aspetto
"ax""ay""az""ba"bb""bc"
Ma il risultato è solo
"ax".."bc"
Come dovrei correggere? Grazie.
Uso irb.Creare un intervallo di stringhe dai valori finali
Scrivo il codice qui sotto.
"ax".."bc"
mi aspetto
"ax""ay""az""ba"bb""bc"
Ma il risultato è solo
"ax".."bc"
Come dovrei correggere? Grazie.
> puts ("ax".."bc").to_a
ax
ay
az
ba
bb
bc
Range è un'incorporato nel costrutto, memorizzare internamente inizio e di fine (e se è una gamma end-SD) per l'efficienza. Quindi IRB ti mostrerà solo il valore letterale.
Cosa vuoi fare?
L'intervallo 'ax' .. 'bc'
rappresenta i valori che ci si aspetta ma non li genera finché non è necessario (come modo per risparmiare tempo e spazio nel caso in cui non si utilizzi ciascun valore). È possibile accedervi tramite un'interfaccia o una conversione in un array:
r = 'ax' .. 'bc' # => "ax" .. "bc"
r.class # => Range
r.to_a # => ["ax", "ay", "az", "ba", "bb", "bc"]
r.to_a.class # => Array
r.each {|x| puts x}
ax
ay
az
ba
bb
bc