可能是提出問題的最糟糕方式,但我是新手,並且盡我所能解釋我的問題。我想(想)當我期望我的數組只有2個可用屬性時,我收到對象
我正在實現一個Ruby Blackjack遊戲。你可以看到我在這裏的回購/來源:https://bitbucket.org/subem81/blackjack
這是關注的特定部分(保存在「手」模塊中,包含在使用我認爲是mixin的Dealer和Player類中):
def show_hand
if self.class.to_s == 'Dealer'
self.hand.each do |card|
card.show_card
end
elsif self.class.to_s == 'Player'
else
puts "A Random person is showing their hand."
end
end
它調用每個Card對象的show_card()方法。或者我想。我一直在卡對象上沒有方法錯誤。這是錯誤:
$ ruby blackjack.rb
Welcome to Mike's Blackjack.
blackjack.rb:35:in `block in show_hand': undefined method `show_card' for
[# <Card:0x007fe504110918 @suit="Spades", @card_type="King">]:Array (NoMethodError)
from blackjack.rb:34:in `each'
from blackjack.rb:34:in `show_hand'
from blackjack.rb:21:in `setup_players'
from blackjack.rb:6:in `initialize'
from blackjack.rb:116:in `new'
from blackjack.rb:116:in `<main>'
既然您是Ruby的新手,我只想指出您可以直接寫'if self.class == Dealer'而不是將類轉換爲字符串。 –
如果你只是打開它所在的類,就不需要使用這樣的模塊。只需在每個類中實現不同的行爲。 –
andrew.cuthbert - 感謝指針! @AndrewMarshall我同意這個模塊。我用它只是爲了在這裏強化自己的概念。我意識到是違反了模塊的目的,因爲它是個別化的使用它的其他類。是否還有其他類型的問題?這不是諷刺,因爲我基本上都在教導我自己的這些原則,所以我會認真地喜歡你們所有人的意見。謝謝大家! –