我寫(爲實驗:))代碼:元類在Ruby中
class A
class << self
def self.f
puts "f"
end
def getMetaclass
class << self
self
end
end
end
end
A.getMetaclass.f
據我瞭解,元類有自己的元類。 Сorrect?
我寫(爲實驗:))代碼:元類在Ruby中
class A
class << self
def self.f
puts "f"
end
def getMetaclass
class << self
self
end
end
end
end
A.getMetaclass.f
據我瞭解,元類有自己的元類。 Сorrect?
在書"Metaprogramming Ruby" of Paolo Perrotta中,術語元類僅被提及一次,而更常使用術語「特徵類」。在你的例子中,A類的特徵類是元類,它有它自己的元類(不是元類)。所以我一直試圖擴大你的榜樣,它似乎是這條產業鏈永遠不會結束:
class Eigen
class << self
def getMetaclass
self
end
def getMetaMetaClass
class << self
self
end
end
def getMetaMetaMetaClass
class << self
class << self
self
end
end
end
end
end
if __FILE__ == $0
puts Eigen.getMetaclass
puts Eigen.getMetaMetaClass
puts Eigen.getMetaMetaMetaClass
end
這裏的結果是:
紅寶石eigen.rb
Eigen
#<Class:Eigen>
#<Class:#<Class:Eigen>>
我只能看不到如何處理這樣的結構:-)
我讀過特徵類只有c當他們被要求時被重新提供。如果是這樣,那麼有可能有一個「海龜一路下來」的方法。