【发布时间】:2014-11-20 22:43:20
【问题描述】:
在观看this video 时,我遇到了主持人戴夫·托马斯提出的一个有趣的问题。他说的是我们一直在 Ruby 类方法定义中看到的语法:
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 谈到了将匿名超类插入层次结构的class << self 语法。我尝试了以下方法:
- 调用
Foo.superclass.baz不起作用,因为Foo.superclass只是Object。 - 我浏览了祖先层次结构的可用方法,但无济于事。
-
Test.class_eval 'self.self.baz'...现在事情变得有些荒谬了。
想法?
问题在视频中的 44:23 左右出现。
【问题讨论】:
-
在视频的最后,Dave 解释了几种方法,每一种都比上一种更优雅。
标签: ruby metaprogramming class-method