我有一个以前在这里问过的问题:我(认为)当我希望我的数组只有 2 个可用 的属性可能会提供一些背景时,我正在返回对象。收到解决方案后,我立即开始向每个玩家展示手牌。下面的模块包含在 Dealer 和 Player 类中。
module Hand
def show_hand
if self.class == Dealer
#Need to cover up 1 of the 2 cards here. Dealer doesn't show both!
print "The dealer is showing: "
print self.hand[0].show_card
puts ''
elsif self.class == Player
print "You have: "
self.hand.each do |item|
item.show_card
end
puts ''
else
puts "A Random person is showing their hand."
end
end
end
我知道这种定制违背了模块的目的,只是用它来强化模块的概念。上述解决方案适用于经销商部分。但是当调用 Player 部分时,它会打印一个空白块。在对 Player 块中的每个“项目”进行 .inspect 时,它确认这些项目实际上是预期的 Card 对象。这是之前的 show_card 方法:
def show_card
"[#{@card_type} of #{@suit}]"
end
所以它只返回了一个带有 card_type 和花色的字符串。只需将方法更改为此,我就可以解决 Player 对象部分的问题:
def show_card
print "[#{@card_type} of #{@suit}]"
end
为什么会这样?我假设它与玩家手上的“每个”的调用有关。真的只是好奇有什么区别以及为什么这些 Card 对象不会在没有明确的“打印”的情况下打印出来,副通过 String 对象返回。
希望我的描述性足够。这让我感到困惑,我真的很想抓住这些小东西,因为我知道它会防止未来出现这样的错误。谢谢!