f#中的赋值运算符

时间:2011-04-04 03:44:23

标签: f# shadowing

我在ruby以及powershell编程中看到我们可以分配变量,如 a,b = b,a 。它实际上是交换变量。

这是否可以在f#中进行,如果是这样,请引导我参考

1 个答案:

答案 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