【发布时间】:2013-04-05 18:59:47
【问题描述】:
有什么方法可以在 let-in-end 表达式中更新绑定在全局范围内的变量?
例如,如果我有一个全局变量:
val playerScore = 0;
然后是函数:
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;
playerScore 的值在 let 表达式中更新,并在“in”子句中打印正确的值,但 playerScore 的实际值没有保存,并在此表达式完成后重置。
在这个表达式执行后,是否有办法在全局级别上保留 playerScore 的值?问题是我无法跟踪分数,因为它每次都重置为 0。
谢谢
【问题讨论】:
标签: scope standards global sml ml