F#中的并行可变赋值

时间:2012-06-17 13:11:48

标签: f#

我想交换两个引用,有没有一种很好的方法使这样的构造工作?

 let mutable sarlast = ref (Array.copy ar)
 let mutable sarcurr = ref (Array.copy ar)
 ... some code ...

 sarcurr, sarlast <- sarlast, sarcurr

1 个答案:

答案 0 :(得分:3)

不,<-是单一赋值,而元组在F#中是不可变的。

您可以为此目的定义中缀函数(@bytebuster的单行建议):

let (>-<) x y = let temp = !x in x := !y; y := temp

// Usage
let a = ref [|1|]
let b = ref [|2|]
a >-< b