加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

swift – Enum,Structs,Classes之间的区别

发布时间:2020-12-14 04:48:01 所属栏目:百科 来源:网络整理
导读:参见英文答案 How should I reason when I have to choose between a class,struct and enum in Swift?????????????????????????????????????7个 所以我一直在网上研究,我找不到这三个的简单定义.我知道An Enum和Struct可以包含Properties,Initializers和Met
参见英文答案 > How should I reason when I have to choose between a class,struct and enum in Swift?????????????????????????????????????7个
所以我一直在网上研究,我找不到这三个的简单定义.我知道An Enum和Struct可以包含Properties,Initializers和Methods,并且两个数据结构也都通过’value’传递,但这就是它……

我想知道,这3个(Enum,Structs,Classes)有什么区别?在每个最简单的定义?

解决方法

我认为 Chris Upjohn对树屋中的主题给出了一个相当简单但很好的解释:

枚举

枚举被认为是一种结构化数据类型,可以修改而无需在代码中多次更改说出String或Int,例如,下面显示了意外更改内容并忘记在某处更改它是多么容易其他.

let myString = "test"

if myString == "ttest" {
  // Doesn't execute because "ttest" is the value assigned to "myString"
}

有了枚举,我们就可以避免这种情况,也不必担心不止一次改变同一个东西.

enum MyEnum: String {
  case Test = "test"
}

let enumValue = MyEnum.Test

if enumValue == MyEnum.Test {
  // Will execute because we can reassign the value of "MyEnum.Test" unless we do so within "MyEnum"
}

结构

我不确定你对MVC模式有多了解,但是在Swift中,这是一种常见的做法,在我解释结构是如何有用之前我将在Swift中快速概述MVC.

模型 – 结构,用于管理大量数据
视图 – 任何扩展UIView的东西,通常都是你在故事板上管理的控制器
Controller – 类,通常仅用于UIView控制器和UITableView等视图

例如,我所说的移动结构用于管理大量数据,人类是一个很好的例子,因为我们可以使用结构来管理联系人列表中的每个人.

struct Birthday {
  var day: Int
  var month: Int
  var year: Double
}

struct Person {
  var firstName: String
  var lastName: String
  var birthday: Birthday
  var phoneNumber: String
  var emailAddress: Int
}

对于您拥有的每个联系人,您将创建一个包含基本详细信息的新Person对象以及一个完全可重用的Birthday结构,使用Birthday结构的好处是我们可以扩展它而不会破坏我们的代码,如果我们需要格式化此人生日的简单方法我们可以添加一个额外的功能,而不会影响我们的其余代码.

通常情况下,您只能找到类绑定视图,当绑定到视图时,只要调用视图,iOS就会自动分配类的新实例,第二次调用视图时,它会请求已创建的类实例.

类的其他用途是实用程序帮助程序,您可以将其创建为单例,这更像是一个高级概念,通常您只需要在较大的应用程序上创建这样的代码,因为通常您需要的所有内容都已内置但是如果您推荐它确实需要使用扩展程序的其他功能,该扩展程序允许您添加到任何内置对象并创建自己的下标.

免责声明:以下文字属于Chris Upjohn.我无法用Swift解释它(可能在一般的CS术语中,使用其他语言),因此我没有看到任何重写类似于此的点.

希望能帮助到你!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读