私は scala を学ぼうとしており、ポーカー アプリを作成して、いくつかのクラス オブジェクトを理解することにしました。デッキはうまく機能していますが、カードを 5 枚引く必要があるところまで来ています。これまでのところ、私は持っています:
import util.Random
case class Card(value: Int, color: String)
class Deck {
private var deck = newDeck
def draw(amount: Int): List[Card] = {
val ret = deck.take(amount)
deck = deck.drop(amount)
ret
}
def newDeck: List[Card] = {
Random.shuffle((1 to 13).map(x =>
List(Card(x, "D"), Card(x, "C"), Card(x, "H"), Card(x, "S"))).toList.flatten)
}
override def toString: String = "Deck has " + deck.length + " cards left."
}
このドロー関数は 2 つのステップを持っているようには見えませんが、他にどのようにカードを何枚でも一番上に持っていき、それらのカードがない状態でリストを残すことができるか (またはすべきか) がわかりません。
(余談ですが、誰かがデッキ作成/シャッフルのためのより良い機能を持っているなら、私はすべて耳にします。これも少しハックに思えます...しかし、私の主な質問はリストの状態です)