是否可以覆盖接收器行为?

时间:2019-01-31 20:29:28

标签: ruby

说我有一个这样的课程:

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 :(得分:-3)

似乎答案可能涉及重写类的pos.x + pos.y方法。正如其中一位评论者所说,您可以做到

method_missing

此处的更多信息:https://en.wikibooks.org/wiki/Ruby_Programming/Syntax/Method_Calls#Special_methods