Ruby - Как воспроизвести поведение указателей / ссылок? - PullRequest
0 голосов
/ 22 июля 2010

Я сейчас пытаюсь создать движок для нового приложения.

Проектирование довольно сложное, и мне действительно нужен способ создания ссылки или указателя или любой другой способ удаленного изменения и доступа к данным. Данные должны храниться в одном месте и не должны дублироваться.

Есть ли способ получить объект по ссылке? Например, я могу получить экземпляр класса с его object_id?

Спасибо за вашу помощь;)

Ответы [ 2 ]

1 голос
/ 22 июля 2010

Следующее должно продемонстрировать, как получить ссылку на объект и снять с него ссылку:

   s = "I am a string"                    #=> "I am a string"
   r = ObjectSpace._id2ref(s.object_id)   #=> "I am a string"
   r == s                                 #=> true

Вы можете просмотреть документацию для Object и ObjectSpace.

0 голосов
/ 22 июля 2010

Не уверен, что именно вы хотите достичь. Ruby уже использует ссылки для всех пользовательских объектов.

Возможно, вы захотите взглянуть на библиотеку delegate.

require 'delegate'

obj = "foo"
ptr = SimpleDelegator.new(obj)
ptr.upcase # => "FOO"
other_obj = "bar"
ptr.__setobj__(other_obj)  # make ptr point to another object 
...