元组可变性的规则是什么?

What are the rules for tuple mutability?

通过反复试验,我在 Swift 中发现了一些关于元组和可变性的事实,但我想了解实际规则。考虑这样的代码:

class T
{
    var f : String = "hello"
}

let a = T();
let b = (f : "hello", "");
a.f = "world";
b.f = "world";
println(a.f)
println(b.f)

a 的行为类似于固定引用(您可以更改对象的任何您喜欢的成员,但不能更改主引用)。所以它就像 C# 中的 readonly

但是 b 表现得更像常数值——上面的代码无法编译。可以说 let(或 var)应用于元组的所有成员。

但这是我的猜测——所以回到我的问题。元组及其可变性的规则是什么?

The Swift Programming Language: The Basics所述,元组是Swift中的复合类型。因此,如果使用 let 创建一个以元组为类型的常量变量,则元组中的所有值也将变为常量。