私は基本的なRubyを練習するためにゲームを作成しています。私のブラックジャックの試合では、私は引っ張っていくためのカードを作りました。Rubyのメソッドが元の配列を突然変異させないのはなぜですか?
player_cards = cards.shuffle!.shift(2)
私がシフトを使用し、そのようにシャッフルと一緒にポップしてみました:私は配列をミックスするために管理している唯一の方法は、その配列から描くと次のように配列され、元のカードから2枚のカードを削除します:私はシャッフルなしでポップとシフトを使用している場合
IRBでplayer_cards = cards.shuffle.shift
player_cards = cards.shuffle.pop
、私は(ハッシュの配列)からプルしようとしている配列はデッキからそれらのカードを削除します。シャッフルを追加すると、カードはデッキから永久に取り外されなくなります。私はシャッフルを使用する必要があります!私の仕事を完了するために。
私が知りたいことは、シャッフルで期待どおりにポップやシフトができないのはなぜですか? Rubyでの連鎖の初歩的な理解は、カード配列が最初にシャッフルされて返され、配列内の要素が削除されるということです。
私の唯一の誤りは、シャッフルが配列をシャッフルし、元のカード配列ではなくシャッフルされた配列を返すということです。シャッフルされた配列から1つまたは2つのカードをポップまたはシフトすると、元の配列の配列ではなく、シャッフルによって配列が返されます。あれは正しいですか?
申し訳ありません問題を理解できません。あなたは私にそれを指摘できますか? – Aleksey
@Aleksey問題は明らかに述べられていますが、私は何かをもっと明確にする理由は見当たりません。 – mudasobwa
申し訳ありません私は今日は少し病気かもしれません。 – Aleksey