2011-07-18 36 views
1

我在Ruby中创建类关联时遇到了困难,因为它是一种动态类型语言。在Java中,我这样写:Ruby类协会

public class Foo { 
    ... 
} 

public class Bar { 
    public Foo foo; 
    ... 
} 

我该如何在Ruby中编写类似的东西?

回答

3
class Foo 

end 

class Bar 

    attr_accessor :foo 

    def initialize (foo) 
    @foo = foo 
    end 

end 

foo = Foo.new 
bar = Bar.new(foo) 

puts bar.foo 

对于你说的话,看来你需要某种类型安全。你可以通过这样做来达到这样的效果

def initialize (foo) 
    raise ArgumentError, "You must provide a valid Foo instance" unless foo.instace_of?(Foo) 
    @foo = foo 
end 
+0

我不是很清楚。我想将现有的Foo对象传递给Bar。 –

+0

我相信你想在构造函数中传递它?编辑 –

+0

是的,没错。我已经考虑过这个解决方案,但对我来说似乎很危险,因为我可以通过构造函数传递一个错误的变量。我想这是动态打字的价格。不管怎么说,还是要谢谢你! –