说我有 2 个课程:
Class Foo
attr_accessor :bar
end
Class Baz < Foo
end
我正在创建一个实例,Foo
然后想要一个Baz
包含 Foo 实例数据的实例:
f = Foo.new(:bar => "Hi World")
# Doesnt work?
b = Baz.new(f)
怎么做?
一个实例,其中包含该实例
Baz
的数据Foo
由于您的构造函数已经接受属性作为哈希,您可以创建一个方法以将Foo
的属性作为哈希返回:
class Foo
attr_accessor :bar
def initialize(attributes={})
@bar = attributes[:bar]
end
def attributes
{:bar => bar}
end
end
class Baz < Foo
end
现在您可以从这些属性创建一个Baz
实例:
f = Foo.new(:bar => "Hi World") #=> #<Foo:0x007fd09a8614c0 @bar="Hi World">
f.attributes #=> {:bar=>"Hi World"}
b = Baz.new(f.attributes) #=> #<Baz:0x007fd09a861268 @bar="Hi World">