Можно ли изменить поведение получателя? - PullRequest
0 голосов
/ 31 января 2019

Скажем, у меня есть такой класс:

class User
  def initialize(name, id)
     @name = name
     @id = id
  end

  def name
    @name
  end

  def id
    @id
  end
end

В этом случае, если я инициализирую пользователя с помощью u = User.new("Joe", 5), вызов u.name вернет "Joe".Но если я вызову неизвестный метод, например User.location, я получу NoSuchMethodException.

Есть ли способ переопределить поведение получателя или класс User, чтобы при вызове User.location он просто возвращал значение nil?

попытался обезопасить метод send, но этот метод работает только при вызове User.send :location.

1 Ответ

0 голосов
/ 31 января 2019

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

def method_missing(method_name, *args)
  nil
end

Подробнее об этом здесь: https://en.wikibooks.org/wiki/Ruby_Programming/Syntax/Method_Calls#Special_methods.

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