【发布时间】:2012-11-24 08:04:53
【问题描述】:
读完元编程 Ruby 中的“对象模型”一章后,我感到很困惑。 对象(某个类的实例)的方法是否与 Ruby 中其类的实例方法相同? 听起来是真的。因为我们知道对象的方法存储在其类中。
class W;end
W.methods == Class.instance_methods # => true
# Also
String.instance_methods == "abc".methods # => true
W 是Class 的一个实例。但是如果我重新打开W 并为其定义一个新方法,那就是混淆了。
class W
def self.foo
"bar"
end
end
W.methods == Class.instance_methods # => false
W是Class的实例,W的方法是Class的实例方法。但是如果:foo 没有存储在Class 中,那么它存储在哪里?
【问题讨论】:
标签: ruby metaprogramming