Ruby:方法别名:Child - Parent Class

时间:2014-01-06 01:55:22

标签: ruby class methods parent-child alias

我有以下内容:

class Parent
  def A
    return 'A'
  end
  def B
    return 'B'
  end
end

class Child < Parent
  def A
    super
    return 'Child.A'
  end
  def B
    super
    return 'Child.B'
  end
end

当我这样做时:     p Child.A     ==&GT; Child.A

然后我在上面的代码下面添加了这个。

class Child < Parent
  alias method_of_child_A A
  def A
    method_of_child_A
  end
end

当我这样做时

p Child.A
=> A

它返回'A',而不是'Child.A'。我正在寻找Child.A。 我希望语法也可以执行以下操作。

Class GrandChild < Child
  alias method_of_GrandChild_A A #if Grandchild.A doesn't exist, 
                                 #it will alias Child.A instead.
                                 #Which what alias does basically.
  def A
    method_of_GrandChild_A
  end
end

所以当我这样做时:     p GrandChild.A     =&GT; Child.A

我对别名功能不太熟悉,有人可以启发我吗?谢谢!

1 个答案:

答案 0 :(得分:1)

我相信您的代码已经按预期运行:

require 'pry'
class Parent
  def A; 'A'; end
  def B; 'B'; end
end

class Child < Parent
  def A; 'Child.A'; end
  def B; 'Child.B'; end
end

class Child < Parent
  alias method_of_child_A A
  def A
    method_of_child_A
  end
end

p Child.new.A #=> "Child.A"

我的编辑很容易使代码略短。