有没有一种方法可以在F#中使用可变函数参数,从而允许类似以下的操作:
let mutable i = 9
let somefun n = n <- 12; ()
somefun i
(* *not* a real-world example *)
我理解可以通过将其包装成记录类型来使其工作
type SomeRec = { mutable i: int }
let ri = { i = 9 }
let someotherfun r = r.i <- 12; ()
我发现可以用类似的方法处理类成员,但是即使我浏览了整个 F# 语言规范(没错,我真的看了),也没有找到允许第一种情况的语法,编译器对我尝试这样做非常不满。我本来希望能有某种类型注释,但是可变不能在这种情况下使用。
我知道我本来不应该这样做的,但第一种情况(int
绑定)和第二种情况(record
类型)在语义上是相同的,任何这样的反对理由都同样适用于两种情况。
所以我认为我在这里漏掉了什么。