swift 中的 struct 和 typealias 有什么区别?

Che*_*ong 4 struct type-alias swift

我想要一个包含一个字符串和一个整数的数组。有什么区别:

struct People { var name: String!; var age: Int! };
var data = Array<People>();
data.append (People(name: "John Doe", age: 31));
Run Code Online (Sandbox Code Playgroud)

和:

typealias People = (name: String!, age: Int!);
var data = Array<People>();
data.append ((name: "John Doe", age: 31));
Run Code Online (Sandbox Code Playgroud)

除此之外的一切。我的意思是,在从 struct 切换到 typealias 时,访问数据、内存管理、指针问题或其他我应该警惕的东西有什么区别吗?我通常使用 struct,但后来我发现我有 typealias 作为替代。我只是想确定哪一种更适合我的日常使用。注意:我注意到 struct 很像 class,因为您可以在其中添加方法。但是对于这样的事情,我通常直接使用类。

Luc*_*tti 5

您正在将 astructtypealias of a tuple.

结构体比元组强大得多,这里有一些只有结构体才能提供的优势

  1. 结构可以符合协议,元组不能
  2. 结构可以有方法,元组不能
  3. 结构可以有计算属性,元组不能
  4. 结构体可以有初始化器,元组不能

注意事项

我建议你为你的模型使用结构。它更适合模型值。

有一天,您将需要向birthYear您的类型添加一个计算属性(如),并且您不想受到简单元组的限制。