У меня есть следующий сценарий:
# Keeps track of all `HomeMadeObject` objects
obj_list = []
# A 2-dimensional matrix of either `nil` or `HomeMadeObject` elements
matrix = ...
# I then add an object like so.
obj = HomeMadeObject.new
matrix[y][x] = obj
obj_list.push(obj)
# Later on, I need to remove 'that same object' from the `matrix`.
matrix[y][x] = nil
Когда я устанавливаю matrix[y][x]
в nil
, это также повлияет на того же объекта в obj_list
, делая его также nil
в obj_list
.
puts obj_list[0] # nil
Я хотел бы изменить указатель matrix[y][x]
(или ссылка ), так что matrix[y][x]
указывает на объект nil
. Таким образом, obj_list
указывает на все правильные объекты, а ячейки matrix
могут адресовать различные местоположения без переопределения объекта HomeMadeObject
на nil
(создание nil
элементов в obj_list
).
Редактировать
Я хотел бы обновить объекты в obj_list
и увидеть обновления в matrix
(поэтому мне нужна какая-то ссылка здесь на исходный объект). Но когда HomeMadeObject
больше не требуется в matrix
, я хочу удалить его только из matrix
.