首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >有没有在ruby中调用超类的另一种方法?

有没有在ruby中调用超类的另一种方法?
EN

Stack Overflow用户
提问于 2018-03-28 08:17:10
回答 2查看 0关注 0票数 0
代码语言:txt
复制
class A
  def a
    puts 'in #a'
  end
end

class B < A
  def a
    b()
  end
  def b
    # here i want to call A#a.
  end
end  
EN

Stack Overflow用户

发布于 2018-03-28 17:45:59

没有很好的方法去做,但你可以A.instance_method(:a).bind(self).call

它会起作用的,但是很难看。

甚至可以在对象中定义自己的方法,以便在java中充当超级方法:

代码语言:txt
复制
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
票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100007842

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档