我想要一个包含一个字符串和一个整数的数组。有什么区别:
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 很像类,因为你可以在其中添加方法。但对于类似的事情,我通常直接使用类。
最佳答案
你正在比较一个struct
和一个typealias of a tuple
。
结构比元组强大得多,这里有一些只有结构提供的优点
- 结构可以符合协议(protocol),元组不能
- 一个结构可以有方法,一个元组不能
- 结构可以有计算属性,元组不能
- 一个结构可以有初始化器,一个元组不能
注意事项
我建议您为模型使用结构。它更适合模型值。
有一天您需要向您的类型添加一个计算属性(如 birthYear
)并且您不希望受到简单元组的限制。
关于swift - swift 中的 struct 和 typealias 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40301625/