#ruby #arrays
#рубиновый #массивы #ruby
Вопрос:
Я пытаюсь выяснить, как получить длину значения массива (индекс?) По какой-то причине он возвращает 1,0,0, и я не знаю, почему. Кто-нибудь может объяснить, что я делаю неправильно, пожалуйста? К вашему сведению, это от RubyMonk. Я пытаюсь решить эту проблему, не получив ответа .. просто нужно немного повысить, чтобы понять, что я делаю не так
def length_finder(input_array)
output= []
input_array.length.times do |x|
output << input_array.length[x]
end
return output
end
Комментарии:
1. Возможно, вы также захотите попробовать
Array.each
, что является более чистым способом перебора элементов (хотя хвала умному использованиюtimes
)2. Вам нужна длина массива или длина каждого элемента в массиве?
Ответ №1:
Разве это не должно быть:
output << input_array[x].length
Здесь вы используете метод ссылки на бит.
Еще немного стиля Ruby:
def length_finder(input_array)
input_array.map(amp;:length)
end
Ответ №2:
Это очень сложно и совсем не идиоматично. Попробуйте это:
def length_finder(input_array)
input_array.map { |x| x.size }
end
Это должно дать вам новый массив с размером каждого дочернего массива в качестве элемента.
Комментарии:
1. хороший ответ, 1 за добавленное значение
2. Неплохо.. но OP не хотел ответа на ответ, просто исправил свой вопрос 🙂
Ответ №3:
def length_finder(input_array)
output = []
input_array.each do |x|
output << x.length
end
return output
end
my_array = length_finder(["first", "second", "third", "forth"])