[英]Prevent methods lookup in ancestor chain(method_missing)
我有一个代码如下
def address
p "address"
end
class Person
def method_missing(sym, *args)
"#{sym} not defined on #{self}"
end
def name
"My name is Person"
end
end
p = Person.new
p.name # => My name is Person
p.address # => expected output is 'address not defined on # <Person:0x007fb2bb022fe0>' but actual output is 'address'
我想利用 method_missing。 但是词汇作用域在这里发挥作用。 所以 method_missing 变得过时了。 任何解决方法?
正如@AlekseiMatiushkin 所说,代码在文件中运行良好。 如果你真的需要它在 irb 中按照你想要的方式工作,你可以将 address 定义为 class 方法
def self.address
p "address"
end
那么missing_method就不会发现它是Object的实例方法,但是你仍然可以像全局function一样调用address
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.