我在ruby以及powershell编程中看到我们可以分配变量,如 a,b = b,a 。它实际上是交换变量。
这是否可以在f#中进行,如果是这样,请引导我参考
答案 0 :(得分:13)
通常,F#不允许重新分配变量。相反,它通过let绑定来支持不可变的命名值。因此,以下是不可能的:
let a = 3
a = 4
除非您明确将a
标记为mutable
:
let mutable a = 3
a <- 4
但是,F#确实允许在大多数情况下变量“阴影”。对此的唯一限制是它不能在顶级模块上完成。但是,在函数中,例如,以下工作正常:
let f () =
let a,b = 1,2
let a,b = b,a //"swap"
a,b