Я младший рубиновый кодер. В настоящее время я пытаюсь выяснить, что не так с кодом, который я пишу. В принципе, у меня массив массивов, и я пытаюсь пропустить его и помещает каждый массив в строку. Но независимо от того, что я делаю, ничего не работает, если я не делаю это долго, что я действительно не хочу делать. Для начала, вот мой массив:Проблема с чередованием массива массивов в Ruby
array1 = [["Mittens", "is", "a", "cat"], ["Lily", "is", "a", "dog"], ["Alex", "is", "a", "turtle"]]
Я хочу поместить результаты так, что получается, например, так:
Mittens is a cat
Lily is a dog
Alex is a turtle
Я пытался использовать это или вариацию это в течение нескольких часов теперь:
array1.each do |sub_array|
sub_array.join(" ")
puts sub_array
end
Но всякий раз, когда я пытаюсь его, он заканчивает тем, как это:
Mittens
is
a
cat
Lily
is
a
dog
Alex
is
a
turtle
Теперь, если я изменю «puts» на «print», я просто получаю те же три массива, которые я получил раньше. Итак, не заканчивая сдачу и просто жесткое кодирование трех «ставит» заявления в моей программе, что мне здесь не хватает? Я знаю, что это очень простая вещь, и я хотел бы написать функцию цикла, которая обеспечивает это легко. Спасибо, что посмотрели!
метод как 'join' не изменит исходный объект. В принципе невозможно, чтобы метод менял объект из одного класса в другой, поэтому строка никогда не волшебным образом превратится в массив. Единственный способ изменить классы - создать новую ссылку на переменную через * присваивание *, как правило, с помощью '='. Методы Ruby могут быть немного сложными, когда дело доходит до того, что они возвращают в сравнении с тем, что они мутируют, поэтому всегда держите документацию открытой и проверяйте каждый вызываемый вами вызов. Нет никакого стыда в чтении руководства. – tadman