美文网首页
swift —— 枚举和结构体

swift —— 枚举和结构体

作者: RX78178 | 来源:发表于2016-12-21 14:43 被阅读14次

使用 "enum" 关键字来创建一个枚举。就像类和所有其他的命名类型,枚举可以有方法和它绑定在一起。例:


enum

swift在默认情况下从0开始分配原始值(raw value),同时每分配一个值,自动加1。但是,你也可以改变这一行为,通过明确的给各个枚举选项赋值。在示例中,Ace被明确的给了一个初始值1,而剩余的原始值,按顺序分配。你也可以使用字符串或者是浮点数作为原始值的类型。使用 "rawValue" 属性来获取枚举选项的原始值。(如果这里,Rank的rawValue type是字符串的话,那么Rank.three.rawValue就是three)

使用 init?(rawVaklue:)构造器来将一个初始值做成一个枚举。例:


init

一个枚举中的枚举选项的值,是一个实际存在的值,而不只是将让他们的原始值换种方式来写。实际上,假如有些位置没有有意义的原始值,你并不一定要提供一个(原始值)。例:


rawValue

注意,在上述的两种指向 "hearts" 枚举选项的方式中:当要给参数赋 ‘hearts’ 的值时,使用的是 Suit.hearts 这一全名(full name),因为常量并没有明确指定一个类型。在switch中,枚举选项使用的是 '.hearts' ,因为self 的值是已知的。只要数值类型是已知的(或者是可推断的)那么你就可以使用 .xxx 缩写,省略枚举名。
如果一个枚举有原始值,那些(原始)值将被确定为声明的一部分,这意味着,任何一个指定了枚举选项的枚举实例(例:Rank.ace),总是有相同的原始值。另一种给枚举选项设置原始值的方法,是将原始值和枚举选项关联起来。这些原始值会在你创建枚举实例的时候被确定。而且不同的枚举实例,即便选项相同,但是原始值不同(两个实例都是Rank.ace,但是原始值不同)。你可以将这种原始值关联的行为,理解成每个枚举实例存储了(不同)属性。例如:思考如下情况,向服务器请求日出和日落的时间。服务器要么返回请求的信息,要么返回错误描述。例:


associate with raw value

这里还有一个拆包的过程,使用 "let" 将 枚举实例(success)进行拆包。这么一来,相对于 C 和 OC中的枚举,swift 中的枚举能包含更多的信息,更加灵活。
注意下,日出和日落的时间,在switch case 条件判断语句中,是如何匹配条件,然后被取出的。

使用 "struct" 关键字来创建一个结构体。结构体支持许多同"类"一样的功能(same behaviors as class),(譬如)包含方法和构造器。例:


structure

类和结构体有一个非常重要的不从点 —— 结构体在代码中传递时总是被拷贝,而类在代码中传递时,总是被引用。这里,牵扯到两种类型的数据结构。结构体是数值类型的,而类是引用类型的。数值类型的变量或者说实例,当作为右值赋值给其他变量时,总是用的拷贝。譬如说,int a = 1,int b = a,这个时候,b就等于2,但是紧接着写一句 a = 4的话,那么a就是4,但是b仍旧是2。原因是int型是数值类型,b = a这一句话中,a的值实际上是拷贝给了b,所以之后修改a的话,b不受影响。但是,如果是引用类型的话,例如:


refrence type

可见,类是引用类型,在 b = a这一句中,实际上,此时a,b指向的是同一个实例,而这个实例的引用计数是2。所以,修改了a之后,b的值也会发生变化。

相关文章

  • 10 结构体和类 —— 《Swift3.0 从入门到出家》

    10 结构体和类 - —— 《Swift3.0 从入门到出家》 结构体和类 Swift中的面向对象5个要素:枚举、...

  • Swift-方法

    在Swift中,类,结构体,枚举,都能定义实例方法。 结构和枚举可以在Swift中定义方法的事实是与C和Objec...

  • Swift学习_基本语法之枚举&类&结构体

    1.枚举 类和结构体 在swift中类和结构体类似,可以把结构体理解成是一种轻量级的类,在swift中结构体不仅可...

  • swift3.0- 枚举

    Swift枚举 Swift中的枚举比OC中的枚举强大, 因为Swift中的枚举是一等类型, 它可以像类和结构体一样...

  • 枚举

    Swift枚举:Swift中的枚举比OC中的枚举强大, 因为Swift中的枚举是一等类型, 它可以像类和结构体一样...

  • Nested Types

    为了表示更复杂的结构,swift中类、结构体和枚举可以使用内嵌类型 在结构体中嵌套枚举的复杂实例 //Neste...

  • Swift Tour Learn (六) -- Swift 语法

    Swift语法基础(五)-- (类和结构体、属性、方法) 本章将会介绍 类和结构体对比结构体和枚举是值类型类是引用...

  • iOS | Swift5.0学习 & 总结(二)

    Swift 结构体和类 结构体 在 Swift 标准库中,绝大多数的公开类型都是结构体,而枚举和类只占很小一部分比...

  • Swift枚举

    枚举简单认识 Swift中的枚举比OC中的枚举强大, 因为Swift中的枚举是一等类型, 它可以像类和结构体一样增...

  • swift —— 枚举和结构体

    使用 "enum" 关键字来创建一个枚举。就像类和所有其他的命名类型,枚举可以有方法和它绑定在一起。例: swif...

网友评论

      本文标题:swift —— 枚举和结构体

      本文链接:https://www.haomeiwen.com/subject/svzxvttx.html