我想交換兩個引用,是否有一個很好的方法使這樣的構造工作?並行可變賦值在F#
let mutable sarlast = ref (Array.copy ar)
let mutable sarcurr = ref (Array.copy ar)
... some code ...
sarcurr, sarlast <- sarlast, sarcurr
我想交換兩個引用,是否有一個很好的方法使這樣的構造工作?並行可變賦值在F#
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
甚至更短:'let(> - <)x y = let temp =!x in x:=!y; y:= temp' – bytebuster
let temp = ref(!x)不是微不足道的,而且很具說明性 – nicolas
@bytebuster不錯的一個...擠壓langage果汁直到最後一滴 – nicolas
這個例子是一個有點瘋狂:你有一個可變的變量指向一個參考的'ref'類型! –
好點。數組已經是引用類型,所以不需要再次使用ref。如果不是優秀的代碼,我想這是對「引用透明」的一個很好的例證。 – nicolas