小编ako*_*ham的帖子

标准ML - 在let-in-end表达式中更新全局变量?

有没有办法在let-in-end表达式中更新全局范围内绑定的变量?

例如,如果我有一个全局变量:

val playerScore = 0; 
Run Code Online (Sandbox Code Playgroud)

然后功能:

fun hit (option:int) = 
    if option = 2 then
        printStay(playerScore, dealerScore)
    else 
        let
            val cardDrawn = showCard(hd deck)
            val playerScore = playerScore + getValue(hd deck)
        in 
            print ("You chose to hit\n" ^ cardDrawn ^ "Dealer Score: " ^ Int.toString(dealerScore) ^ "\nPlayer Score: " ^ Int.toString(playerScore) ^ "\n")  
        end; 
Run Code Online (Sandbox Code Playgroud)

playerScore的值在let表达式中更新,并在"in"子句中输出正确的值,但不保存playerScore的实际值,并在此表达式完成后重置.

无论如何,在执行此表达式后,是否仍保留playerScore在全局级别的值?问题是我无法跟踪分数,因为它每次都会重置为0.

谢谢

standards scope global ml sml

3
推荐指数
1
解决办法
2209
查看次数

标签 统计

global ×1

ml ×1

scope ×1

sml ×1

standards ×1