#arrays #ruby #class #element #record
Вопрос:
Скажем, у меня есть такой класс
class Date attr_accessor :day, :month, :year end
И я создаю для него 3 записи и добавляю каждую в массив.
class Date attr_accessor :day, :month, :year end date = Date.new() date.day = 31 date.month = 12 date.year = 2019 array = [] array lt;lt; date date = Date.new() date.day = 30 date.month = 2 date.year = 2014 array lt;lt; date date = Date.new() date.day = 23 date.month = 1 date.year = 2012 array lt;lt; date
Если бы я хотел поместить date.day (или каждый атрибут) из третьей записи/третьего элемента массива конкретно, как бы я получил к нему доступ (если я хочу распечатать его или получить доступ к нему из другой функции/процедуры, когда требуется конкретный пользовательский ввод)? Что-то вроде puts array[2], очевидно, не работает.
Комментарии:
1. Название
Date
-действительно плохой выбор, так как оно уже является частью стандартной библиотеки Ruby.2. А, ладно. Есть ли способ заранее узнать, что входит в стандартную библиотеку Ruby/способ проверить это?
3. ну, это немного сложно —
Date
на самом деле не определено, пока вы этого не потребуете. В Ruby есть несколько списков зарезервированных слов, но я думаю, что единственный реальный способ проверить наличие коллизии имен-это поиск в документах.
Ответ №1:
array[2]
вернет третий элемент из массива. Когда вы захотите позвонить day
, вы можете написать
puts array[2].day
Если вы хотите напечатать день всех элементов в массиве, вам может потребоваться сделать:
array.each do |element| puts element.day end