我想要一个包含一个字符串和一个整数的数组。以下是什么区别:
struct People { var name: String!; var age: Int! };
var data = Array<People>();
data.append (People(name: "John Doe", age: 31));
使用:
typealias People = (name: String!, age: Int!);
var data = Array<People>();
data.append ((name: "John Doe", age: 31));
除了那之外的其他一切。我的意思是,在从struct切换到typealias时,访问数据,内存管理,指针问题或其他什么我应该警惕有什么不同吗?我通常使用struct,但后来我发现我有typealias作为替代。我只是想确定哪一个更适合我的日常使用。注意:我注意到struct就像你可以在那里添加方法一样。但对于这样的事情,我通常会直接上课。
答案 0 :(得分:4)
您正在将struct
与typealias of a tuple
进行比较。
结构比元组强大得多,这里只有结构提供的一些优点
我建议你为你的模型使用 struct 。它更适合模型价值。
有一天,您需要为您的类型添加计算属性(如birthYear
),并且您不希望受到简单元组限制的约束。
答案 1 :(得分:1)
结构和元组有不同的用途。
当您temporary
需要几个相关数据时,请在方案中使用元组。它应该不定义任何新实体(例如Person
)。
例如,当从函数返回多个值时使用元组:
func operations(a: Int, b: Int) -> (Int, Int) {
return (a + b, a * b)
}
let (mySum, myMul) = operations(10, 5)
mySum // => 15
myMul // => 50
返回operations()
的元组是临时存在的,直到将其数据提取到变量mySum
和myMul
中。
该结构将长期使用的相关数据耦合在一起。此外,还允许定义对结构数据进行操作的方法(以及与继承相关的所有内容,符合协议)
使用它来定义实体及其在应用程序中的行为,例如您对People
的行为。