这种'元类'方法有什么作用?

时间:2011-04-29 13:11:14

标签: ruby

def metaclass; class << self; self; end; end

有人可以为我解读这一行。我猜它被挤进一个的事实也没有多大帮助。但是在2天前开始看红宝石时,我担心我可能会错误地将它分开。

1 个答案:

答案 0 :(得分:7)

分开:

def metaclass
  class << self
    self
  end
end

请注意,这可以作为Ruby 1.9.2(Object#singleton_class)中的内置方法使用。

这样做是通过打开相同的via class << self然后返回它(self)来返回对象的singleton_class / metaclass / eigenclass。如果您对元类本身感到困惑,我建议您阅读以下文章:

The Ruby Object Model - Structure and Semantics