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
解決方案。我正在尋找類似this的東西。Ruby - 在超類中調用另一類方法
UPDATE
溶液不需要是任何類似於上面的鏈路;這只是一個建議。例如,我試圖做的:
class B < A
def self.b
instance_eval(&A.method(:a).to_proc)
end
end
但這樣一來我就紅寶石1.8.7得到一個奇怪的ArgumentError
。
謝謝你的嘗試。我也嘗試了第一個。我甚至嘗試過:'instance_eval(&A.method(:a).to_proc)'(在'def self.b'內部),但是後來在Ruby 1.8.7中出現了一個奇怪的ArgumentError。 – 2011-04-25 04:58:43