如何在函数中指定引用单元格,然后返回sml中的值

时间:2015-04-25 20:01:02

标签: pattern-matching sml ref

所以我在sml中有一个函数,它接受一个整数值并引用它。 如何为变量余额分配新值,然后返回该余额?在Deposit和WithDraw模式中?

datatype Message = GetBalance | Deposit of int | WithDraw of int;

fun opening_account init_amt = let val balance = ref init_amt
                in fn GetBalance => !balance
                 | Deposit x => balance = !balance + x
                 | WithDraw x => balance = !balance - x
               end; 

1 个答案:

答案 0 :(得分:1)

要更新参考单元格,请使用:=。即:

balance := !balance + x

如果您希望同时更新余额,然后返回新值,只需使用;一个接一个地执行:

(balance := !balance + x; !balance)