我想指出F#中的“危险”部分。考虑以下代码

let mutable a, b as ab = 0, 0
a <- 4
a
ab


您将得到a = 4ab = 0, 0。这可能是正确的行为,我只是想指出来并了解您的意见。您是否认为此行为合乎逻辑,为什么?我有一些问题无法接受,因为我一直认为(a,b)和ab应该相同。

最佳答案

如果在F#交互式环境中运行let mutable a, b as ab = 0, 0,您将获得:

val mutable ab : int * int = (0, 0)
val mutable b : int = 0
val mutable a : int = 0


这意味着该表达式创建了3个不同且独立的值。修改一个值不会影响其他值

10-08 11:26