У меня есть массив в ruby, и я устанавливаю индекс для id объекта, как показано ниже.
Мой первый вопрос:
Этот код работает:
@array = Array.new(@objects.size)
for i in 0...@objects.size
@array[i] = @objects[i].value
end
но когда я делаю:
@array[@objects[i].id] = @objects[i].value
он говорит:
неопределенный метод [] для nil :: NilClass
Я попытался поставить100 или 1000 вместо i
, чтобы убедиться, что это не «индекс вне диапазона», но это сработало, я попытался преобразовать id
в int, используя to_i
, хотя это уже должно быть int, но это все жене работаетЯ не понимаю.
Мой второй вопрос:
Если я заставляю идентификаторы работать, говорит ли я, что Array.new(@objects.size)
становится бесполезным?
Я не являюсьиспользуя индексы от 0 до размера, но идентификаторы, так что же происходит?Это инициализация индексов от 0...size
до nil
или это просто создание пространства для максимум x объектов?
РЕДАКТИРОВАТЬ:
Так что мне сказали, что лучше использовать Hashдля этого, и я согласен, но у меня все еще, кажется, есть та же самая ошибка в той же самой ситуации (только измененный Array.new(@objects.size)
на Hash.new
)