Есть ли способ для изменения на месте объекта в рубине? - PullRequest
0 голосов
/ 28 апреля 2018

Я не могу найти метод, который позволяет модифицировать объект с помощью произвольных методов, реализующих объект, которые возвращают значение.

То, что я надеюсь сделать, это

class MyClass
  def return_modified_my_class_instance
    ...
  end
end

object = MyClass.new
object.in_place!(&:return_modified_my_class_instance)

но я не заинтересован в реализации этого сам. Я хочу сделать это только в том случае, если в Object в ruby ​​

существует эквивалент in_place!

1 Ответ

0 голосов
/ 28 апреля 2018

Это невозможно. Метод, который изменяет любой объект, может знать только, как манипулировать состоянием, которое является общим для всех объектов, а это не так.

Метод, который может заменить любой объект в Ruby новым, невозможен, поскольку ссылки на объекты не могут изменить свой класс в Ruby.

Похоже, вы программист на Smalltalk, и вы ищете эквивалент become:? Это невозможно в Ruby.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...