class A
def self.a
puts "self: #{self}; superclass: #{superclass}"
end
end
class B < A
class << self; undef_method(:a); end # I'm not allowed to use B.a
def self.b
# here I want to call A.a with B as self.
end
end
A.a #=> self: A; superclass: Object
B.b #=> self: B; superclass: A (expected)
我不想要alias_method
解决方案。我正在寻找这样的东西。
更新
解决方案不需要与上面的链接类似;这只是一个建议。例如,我试图这样做:
class B < A
def self.b
instance_eval(&A.method(:a).to_proc)
end
end
但这样我ArgumentError
对 Ruby 1.8.7 感到很奇怪。