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

标签 swift struct type-alias

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

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

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

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

注意事项

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

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

关于swift - swift 中的 struct 和 typealias 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40301625/

相关文章:

golang : I have a map of int to struct. 为什么我不能直接修改map值中的字段?

swift - 为什么不在 Swift 中使用基于结构的单例

ios - 从尚未提交的上下文中获取数据。核心数据

ios - 出现键盘时更改约束 - Swift

c# - 我们可以为 AJAX 控件工具包类使用其他名称吗?

c++ - 是否可以为 constexpr 函数定义类型别名

具有提供类型/值别名的特征的 Scala 包对象

ios - 获取两个日期的差异 - Swift

inheritance - 如何将 'child' 结构传递给接受 'parent' 结构的函数?

c - typedef 可能未声明或不明确