2011-07-18 54 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

是的,沒錯。我已經考慮過這個解決方案,但對我來說似乎很危險,因爲我可以通過構造函數傳遞一個錯誤的變量。我想這是動態打字的價格。不管怎麼說,還是要謝謝你! –