我想在subclass
中调用superclass
方法,但我不知道如何。
我不想做这样的事情:
class A
def initialize
run
end
def run
p "RUN"
@runned = true
method_from_b
end
end
class B < A
def method_from_b
p @runned
end
end
b = B.new
但更棘手
class A
def self.create
B.new # here I want to create a instance
end
create # call create
def initialize
run
end
def run
p "RUN"
@runned = true
method_from_b
end
end
class B < A
def method_from_b
p @runned
end
end
我知道里面有什么问题,但我怎样才能实现这个功能呢?
我希望superclass
中的方法总是从子类调用方法但没有显式实例创建(通过new)。
如果它不可能,那么.. Test::Unit::TestCase
如何运作?
要运行测试,我可以编写cmd: ruby test.rb
,TestCase会从测试类中获取所有方法明星test_
。
这正是我需要的。
编辑:
我想我已经明白了:
require_relative 'file2'
class B
def initialize
p "A#initialize"
end
def method_from_b
p @runned
end
end
module M
def run
p "RUN"
@runned = true
method_from_b
end
end
class A
def self.create
p "create"
require $0
B.send(:include, M)
a = B.new
a.run
end
create
end
它有效