Как суммировать и присваивать значение в F #? - PullRequest
0 голосов
/ 26 мая 2020

Что не так с кодом, когда я запускаю этот код, он не запускает оператор if и появляется предупреждение о присвоении значения переменной игрока. Я новичок в F #, поэтому, пожалуйста, расскажите мне, как я могу суммировать случайное число и значение игрока и назначить его игроку, а затем оператор if работает.

...let player=0
   let dealer=0
   for i = 1 to 10 do
   let randnum=randomCh()
   let randnum2=randomCh()
   player=randnum+player
   dealer=randnum2+dealer
   Console.Write("Player revealed cards.\n")
   playercards()
   Console.Write("Dealer revealed cards.\n")
   playercards()
   if player>=21 || dealer>=21 then result()...

1 Ответ

2 голосов
/ 26 мая 2020

В F # значения неизменяемы. Если вы хотите объявить изменяемую переменную, используйте ключевое слово mutable

let mutable player = 0
let mutable dealer = 0

Чтобы присвоить новое значение изменяемой переменной, вы должны использовать оператор <- (= - сравнение)

for i = 1 to 10 do
    player <- player + randomCh()
    dealer <- dealer + randomCh()

Дополнительная литература Значения в F #

В F # вы можете использовать printf вместо Console.Write. Также рассмотрите возможность использования неизменяемых значений с рекурсией вместо l oop с изменяемыми переменными. Я не знаю правил блэкджека или любой другой игры, которую вы создаете, но вот пример рекурсивного подхода:

type GameResult = Player | Dealer | Draw

let rec notblackjack player dealer round =
    if player >= 21 then Dealer
    elif dealer >= 21 then Player
    elif round = 10 then Draw // in this game we have draw on round 10
    else blackjack (player + randomCh()) (dealer + randomCh()) (round + 1)

notblackjack 0 0 1 |> printfn "%A"
...