元组可变性的规则是什么?
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
创建一个以元组为类型的常量变量,则元组中的所有值也将变为常量。
通过反复试验,我在 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
创建一个以元组为类型的常量变量,则元组中的所有值也将变为常量。