За вход като 12,34,56; 78,91; 50,60;
Искам да разделя струната с разделител от точка и след това тези низове се разделят на запетая
пр:
puts "Input: "
input = gets.chomp
s_array = input.split(";")
for i in 0..s_array.size
puts s_array[i].split(",")
end
Той ще печата успешно с puts
но след като получа грешка
undefined method "split" for nil:NilClass <NoMethodError>
Каква е причината за тази грешка?
Отговори:
2 за отговор № 1промяна ..
за ...
for i in 0...s_array.size
Създаване на диапазон с ..
е включено, докато ...
не е, напр.
1..5 # => 1,2,3,4,5
1...5 # => 1,2,3,4
Така че променливата i
препълва масива, в случая, ако размерът на масива е 5, array_s [5] ще бъде nill.
2 за отговор № 2
По-грубият подход е:
input.split(";").each { |x| puts x.split (",") }
Трябва да използвате Array # всеки, това не е рубин да се използва for
и има много малко случаи, в които for
на мястото на each
в рубин и for
ключова дума делегати each
дори когато се използва.