我想交换两个引用,有没有一种很好的方法让这样的结构工作?
let mutable sarlast = ref (Array.copy ar)
let mutable sarcurr = ref (Array.copy ar)
... some code ...
sarcurr, sarlast <- sarlast, sarcurr
不,<-
是单个赋值,元组在 F# 中是不可变的。
您可以为此目的定义一个中缀函数(@bytebuster的单行建议):
let (>-<) x y = let temp = !x in x := !y; y := temp
// Usage
let a = ref [|1|]
let b = ref [|2|]
a >-< b