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
しかし、このようにして、Ruby1.8.7ArgumentError
で奇妙なことが起こります。