在看着this video的時候,我遇到了一個有趣的問題,主持人Dave Thomas。他是在談論我們看到Ruby類方法定義所有的時間語法:在'class << self'方法定義中訪問Ruby'self'方法
class Foo
class << self
def bar
puts "inside class method"
end
def self.baz
puts "inside anonymous superclass method"
end
end
end
當然,我們可以訪問Foo.bar
,但一個人如何去baz
? Dave Thomas談到了將語法插入到層次結構中的匿名超類。我試過如下:
- 調用
Foo.superclass.baz
不起作用,因爲Foo.superclass
只是Object
。 - 我對祖先層次結構的可用方法進行了探討,但無濟於事。
Test.class_eval 'self.self.baz'
......現在事情變得有些荒謬。
想法?
問題出現在視頻中44:23左右。
在視頻的最後,戴夫解釋了幾種方式來做到這一點,每一種方式都比上次更優雅。 – jreut 2014-11-20 23:03:19