Pre vstup ako 12,34,56; 78,91; 50,60;
Chcem rozdeliť reťazec na bodkočiarku a potom na reťazce oddelené čiarkou
ex:
puts "Input: "
input = gets.chomp
s_array = input.split(";")
for i in 0..s_array.size
puts s_array[i].split(",")
end
Úspešne sa vytlačí s puts
ale potom, čo som dostal chybu
undefined method "split" for nil:NilClass <NoMethodError>
Aký je dôvod tejto chyby?
odpovede:
2 pre odpoveď č. 1zmena ..
pre ...
for i in 0...s_array.size
Vytvára sa rozsah s ..
je inkluzívny, zatiaľ čo ...
nie je, napr.
1..5 # => 1,2,3,4,5
1...5 # => 1,2,3,4
Takže premenná i
preteká pole, vo vašom prípade, ak je veľkosť poľa 5, bude array_s [5] nulové.
2 pre odpoveď č. 2
Rubínovejší prístup je:
input.split(";").each { |x| puts x.split (",") }
Mali by ste používať Array # každý, nie je to rubínové použitie for
a je veľmi málo prípadov, keď for
namiesto each
v rubíne a for
delegáti kľúčového slova na each
aj keď sa používa.