2013-03-17 59 views
0

從我使用rails框架來管理我的關係的來源。紅寶石組成 - 如何顯示組成類的成員?

現在試圖只做基本的Ruby。

試圖瞭解關係和組成。 使用一副牌作爲例子。 現在只需使用1到52的卡號(現在忽略套裝和實際數字)。

下面的代碼可以創建PackOfCards,但不會創建我想要的5張卡片,無論是什麼都不顯示,或者我在最後得到零的零。

class PackOfCards 

    attr_accessor :pack_name, :cards 

    def initialize(pack_name) 

    @pack_name= pack_name 
    cards = [] 
    5.times do 
     cards << PlayingCard.new(self) 
    end 
    end 

end 

class PlayingCard 

    attr_accessor :pack, :card_number 

    def initialize(pack) 
    @card_number = rand(52) 
    @pack = pack 
    end 

end 

my_pack=PackOfCards.new('bobs') 
puts my_pack.pack_name 
puts my_pack.cards # Nothing 
my_pack.cards.each do |one_card| 
    puts one_card.card_number # Undefined method 'each' for nil 
end 

我該如何創建一副撲克牌並讓它擁有5張牌以及如何顯示這5張牌?

回答

1

我認爲accessor只爲你創建了cardscards=方法。我不認爲<<應該工作。嘗試更改爲:

@cards = [] 
5.times do 
    @cards << PlayingCard.new(self) 
end 
+0

是的,工作,謝謝! – junky 2013-03-17 15:45:43

0

問題實際上存在於您創建的非預期局部變量中。

如果你說:

X =卡

這將是一樣:

X = self.cards

但是沒有對轉讓自身實際創建一個局部變量'cards'

selfcards = []

卡< <富

將正常工作,如使用方法將按照紅寶石查找自我第一,但在紅寶石局部變量看起來是一樣的方法調用,紅寶石可分配時創建它們。