/ / Použitie .split na reťazec v poli - rubín, polia, split

Použitie .split na reťazec v poli - rubín, polia, rozdelenie

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ď č. 1

zmena .. 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.