@hand
配列からカードを削除したい場合は、指定した入力と同じランクにします。私は配列全体をループしています、なぜそれが最後のカードを取り除かないのですか?どんな助けでも大歓迎です!ループ内で最後の要素が削除されない
出力:
2 of Clubs
2 of Spades
2 of Hearts
2 of Diamonds
3 of Clubs
3 of Spades
------------
2 of Clubs
2 of Spades
2 of Hearts
2 of Diamonds
3 of Spades
コード:
deck = Deck.new
hand = Hand.new(deck.deal, deck.deal, deck.deal, deck.deal, deck.deal, deck.deal)
puts hand.to_s
hand.remove_cards("3")
puts "------------"
puts hand.to_s
ハンドクラス:
class Hand
def initialize(*cards)
@hand = cards
end
def remove_cards(value)
@hand.each_with_index do |hand_card, i|
if hand_card.rank == value
@hand.delete_at(i)
end
end
end
def to_s
output = ""
@hand.each do |card|
output += card.to_s + "\n"
end
return output
end
end
カードのクラス:
class Card
attr_reader :rank, :suit
def initialize(rank, suit)
@rank = rank
@suit = suit
end
def to_s
"#{@rank} of #{@suit}"
end
end
Deck'が示されていないクラス 'とクラス' Card'はあなたが示したコードでは使用されません。 –