Я использовал его для того, чтобы хранить объекты с файлами с отображенной памятью.
определенным примером была база данных изображения, которая обработала очень большие количества больших изображений (больше, чем мог уместиться в памяти).
class B < A
alias :super_a :a
def a
b()
end
def b
super_a()
end
end
Нет хорошего способа сделать это, но вы можете сделать A.instance_method (: a) .bind (self) .call
, который будет работать, но некрасиво .
Вы даже можете определить свой собственный метод в Object, чтобы он действовал как super в java:
class SuperProxy
def initialize(obj)
@obj = obj
end
def method_missing(meth, *args, &blk)
@obj.class.superclass.instance_method(meth).bind(@obj).call(*args, &blk)
end
end
class Object
private
def sup
SuperProxy.new(self)
end
end
class A
def a
puts "In A#a"
end
end
class B<A
def a
end
def b
sup.a
end
end
B.new.b # Prints in A#a