ここで尋ねた以前の質問がありました:私は (思う) オブジェクトが返されていると思っていますが、配列には 背景を示す可能性のある 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 で、アイテムが実際にカード オブジェクトであることが確認されました。以前の show_card メソッドは次のとおりです。
def show_card
"[#{@card_type} of #{@suit}]"
end
そのため、card_type とスーツを含む文字列が返されました。メソッドを次のように変更するだけで、Player オブジェクト部分の問題を修正できました。
def show_card
print "[#{@card_type} of #{@suit}]"
end
なぜこれが起こったのですか?プレイヤーハンドの「each」の呼び出しと関係があると思います。違いが何であるか、そして String オブジェクトを介して返される明示的な「印刷」がないと、これらの Card オブジェクトが印刷されない理由が本当に知りたいです。
私が十分に説明できたことを願っています。これは私を困惑させるだけであり、このような将来のエラーを防ぐことがわかっているので、これらの小さなことを本当に理解しようとしています. ありがとう!