Я работаю со строкой, которую нужно преобразовать в двухмерный массив:
rows = [['1', '2'], ['10', '20']]
Мне нужны эти значения как целые числа вместо строк.Я могу перебрать их, а затем выполнить map
, например:
rows.each {|row| row.map!(&:to_i)}
Я пытался создать метод to_i
, который мог бы быть цепным, чтобы я мог запустить rows.to_i
.
def to_i
each do |nested|
nested.map!(&:to_i)
end
end
Это неудивительно, что это не так:
NoMethodError: undefined method `to_i' for [["1", "2"], ["10", "20"]]:Array
, поскольку Array
не реализует метод.Помимо исправления обезьяны класса Array
, существует ли более правильный или более правильный способ сделать это?
Другой альтернативой является:
def ary_to_i array
array.each do |nested|
nested.map!(&:to_i)
end
end
, но я нашел вызов метода ary_to_i(rows)
сбивает с толку.