Ruby on rails ruby self.u方法 类基 戴夫·萨姆 “我是基地” 结束 def self.inherited(基本) 别名\u方法:old\u sam,:sam 基本类\u评估do 戴夫·萨姆 老山姆 p“内部继承” 结束 结束 超级的 结束 结束 类派生“内部派生”
派生时。new.sam=>“内部派生” 但我想 “内部派生” “内部继承”Ruby on rails ruby self.u方法 类基 戴夫·萨姆 “我是基地” 结束 def self.inherited(基本) 别名\u方法:old\u sam,:sam 基本类\u评估do 戴夫·萨姆 老山姆 p“内部继承” 结束 结束 超级的 结束 结束 类派生“内部派生”,ruby-on-rails,ruby,inheritance,alias-method,Ruby On Rails,Ruby,Inheritance,Alias Method,派生时。new.sam=>“内部派生” 但我想 “内部派生” “内部继承” ruby新手。任何帮助都将不胜感激 您只需覆盖派生的中由基.class\u eval方法定义的sam 如果将方法sam从Derived中删除: class Base def sam "I m the base" end def self.inherited(base) alias_method :old_sam, :sam base.class_eval do def s
ruby新手。任何帮助都将不胜感激 您只需覆盖
派生的中由基.class\u eval
方法定义的sam
如果将方法sam
从Derived
中删除:
class Base
def sam
"I m the base"
end
def self.inherited(base)
alias_method :old_sam, :sam
base.class_eval do
def sam
old_sam
p "Inside inherited"
end
end
super
end
end
class Derived < Base
def sam
p "Inside Derived"
end
end
后者是因为您正在将一个参数传递给old_sam
方法,该方法不接受该参数:
#=> "Inside inherited"
#=> ArgumentError: wrong number of arguments (given 1, expected 0)
但我想
“内部派生”
“内部继承”
这在您的设置中是不可能的,因为您首先要做的是在所有降序类的class\u eval
块中定义一个实例方法sam
,但稍后只是在中重写。谢谢Andrey。old_sam方法不接受任何参数,现在代码也相应地更改了。对此很抱歉。@Raj我回答了你的问题,一直编辑它不是一个好的选择,现在也没有意义,因为它不会改变给出的答案。
#=> "Inside inherited"
#=> ArgumentError: wrong number of arguments (given 1, expected 0)
old_sam p "Inside inherited"