非mut不具有传染性。例如
struct T {
mut s:Int
}
f(a: T) { let mut a = a; a.s = 42 }
let a = { s:101 }
f(a)
println(a.s)
这里一个immut的a可以被在另一处重新mut然后修改,感觉会容易导致错误。
非mut不具有传染性。例如
struct T {
mut s:Int
}
f(a: T) { let mut a = a; a.s = 42 }
let a = { s:101 }
f(a)
println(a.s)
这里一个immut的a可以被在另一处重新mut然后修改,感觉会容易导致错误。
MoonBit对结构体内部的mut成员,能够直接提供interior mutability(内部可变性)。实际上即使a
全程一直保持不可变绑定,也仍然能在任意位置修改a.s
成员。这里和Rust还是不太一样。
如果需要保持内部成员不可变,肯定是需要用getter和setter保护。