0

ここで尋ねた以前の質問がありました:私は (思う) オブジェクトが返されていると思っていますが、配列には 背景を示す可能性のある 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 オブジェクトが印刷されない理由が本当に知りたいです。

私が十分に説明できたことを願っています。これは私を困惑させるだけであり、このような将来のエラーを防ぐことがわかっているので、これらの小さなことを本当に理解しようとしています. ありがとう!

4

1 に答える 1