特殊なカードデッキを構築するための再帰関数を作成しようとしています。最初のパラメータであるnumOfCardsは、デッキ内のカードの数であると想定されています。sourceDeckは、デッキを構築するために使用できる可能性のあるカードのリストであり、currentDeckは私のアキュムレータであり、カードの最終的なリストになります。
ただし、私が抱えている問題は、numOfCardsの数値を送信すると、matchステートメントで0に設定されることです。または、少なくともそれがどのように見えるかです。デバッガーでステップスルーしてみましたが、関数に入ると値が正しいです。ただし、一致の実行を開始するとすぐに、一致の値とパラメーターの値(少なくとも一貫性がある)の両方にカーソルを合わせると、突然0になります。
そのため、一致は0でトリガーされ、反復するのではなく、空のcurrentDeckを返すだけです。
これに関するヒントはありますか?おそらく単純なことですが、私は困惑しています。:)
let rec buildDungeon (numOfCards, sourceDeck : List<Card>, currentDeck : List<Card>) =
match currentDeck.Length with
| numOfCards -> currentDeck
| _ -> buildDungeon (numOfCards, sourceDeck, newCard(sourceDeck)::currentDeck)