Swift 枚举和结构

枚举

  使用enum创建枚举——注意
Swift 的枚举可以关联方法:


 1 enum Rank: Int {
2 case Ace = 1 case Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten
3 case Jack, Queen, King
4 func simpleDescription () -> String {
5 switch self {
6 case .Ace:
7 return "ace" case .Jack:
8 return "jack" case .Queen:
9 return "queen" case .King:
10 return "king" default:
11 return String (self.toRaw ())
12 }
13 }
14 }
15 let ace = Rank.Ace
16 let aceRawValue = ace.toRaw ()

使用toRawfromRaw在原始(raw)数值和枚举值之间进行转换:


1 if let convertedRank = Rank.fromRaw (3) {
2 let threeDescription = convertedRank.simpleDescription ()
3 }

注意枚举中的成员值(member
value)是实际的值(actual value),和原始值(raw value)没有必然关联。

  一些情况下枚举不存在有意义的原始值,这时可以直接忽略原始值:


 1 enum Suit {
2 case Spades, Hearts, Diamonds, Clubs
3 func simpleDescription () -> String {
4 switch self {
5 case .Spades:
6 return "spades" case .Hearts:
7 return "hearts" case .Diamonds:
8 return "diamonds" case .Clubs:
9 return "clubs"
10 }
11 }
12 }
13 let hearts = Suit.Hearts
14 let heartsDescription = hearts.simpleDescription ()

除了可以关联方法,枚举还支持在其成员上关联值,同一枚举的不同成员可以有不同的关联的值:


 1 enum ServerResponse {
2 case Result (String, String)
3 case Error (String)
4 }
5
6 let success = ServerResponse.Result ("6:00 am", "8:09 pm")
7 let failure = ServerResponse.Error ("Out of cheese.")
8
9 switch success {
10 case let .Result (sunrise, sunset):
11 let serverResponse = "Sunrise is at \(sunrise) and sunset is at \(sunset)." case let .Error (error):
12 let serverResponse = "Failure... \(error)"
13 }

结构

  Swift
使用struct关键字创建结构。结构支持构造器和方法这些类的特性。结构和类的最大区别在于:结构的实例按值传递(passed by
value),而类的实例按引用传递(passed by reference)。


1 struct Card {
2 var rank: Rank
3 var suit: Suit
4 func simpleDescription () -> String {
5 return "The \(rank.simpleDescription ()) of \(suit.simpleDescription ())"
6 }
7 }
8 let threeOfSpades = Card (rank: .Three, suit: .Spades)
9 let threeOfSpadesDescription = threeOfSpades.simpleDescription ()

Swift 枚举和结构,布布扣,bubuko.com

时间: 2024-10-11 01:16:38

Swift 枚举和结构的相关文章

苹果新的编程语言 Swift 语言进阶(七)--枚举、结构、类

一. 枚举 枚举定义了一种包含一组相关值的公共类型.枚举是Swift中的一种与类类似的类型,具有许多传统类才有的特征,例如计算属性.实例方法,能够通过扩展或协议增强功能等. 1.1 枚举定义 Swift 语言的枚举类型的定义语法如下: enum CompassPoint { case North case South case East case West } 枚举语法以一个关键字enum来标识,enum后面包含一个枚举类型名字,枚举定义全部放到一对大括号中. 在枚举中定义的值称为枚举成员值,用

Swift学习——A Swift Tour 枚举和结构体

Enumerations and Structures Enumerations   枚举的使用 使用 enum 定义一个枚举,枚举里面可以关联方法,比如下文中的描述方法 enum Rank: Int { case Ace = 1 case Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten case Jack, Queen, King func simpleDescription() -> String { switch self { ca

Swift中文教程(六)--枚举和结构

原文:Swift中文教程(六)--枚举和结构 Enumerations 枚举 使用 enum 来创建一个枚举.跟Classes(类)和其他类型的命名方式一样,枚举也可以有Method(方法). 1 enum Rank: Int { 2 case Ace = 1 3 case Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten 4 case Jack, Queen, King 5 func simpleDescription() -> Stri

Swift基础语法(五)枚举、结构体与类的区别

swift中的结构体值可以是整型.浮点型.字符串.字符.元祖,如果不赋值默认为整型且从0开始计数,如果为整型枚举且要求不是从0开始只需指定枚举的第一个值以后的值自动依次加1 引用方式也与oc有所出入 //枚举定义 enum 枚举名 { case 标识符1,标识符2 case 标识符3(类型列表) case 标识符4=值 } //引用 枚举名.标识符 //或者直接 .标识符 枚举多类型读取 enum Barcode { case UPCA(Int, Int, Int) case QRCode(St

Swift中类和结构体

1. 类和结构体对比 Swift 中类和结构体有很多共同点: 定义属性用于存储值 定义方法用于提供功能 定义附属脚本用于访问值 定义构造器用于生成初始化值 通过扩展以增加默认实现的功能 符合协议以对某类提供标准功能 与结构体相比,类还有如下的附加功能: 继承允许一个类继承另一个类的特征 类型转换允许在运行时检查和解释一个类实例的类型 解构器允许一个类实例释放任何其所被分配的资源 引用计数允许对一个类的多次引用 2. 类和结构体的定义语法 类和结构体有着类似的定义方式.我们通过关键字class和s

24.swift枚举

import Foundation /* Swift枚举: Swift中的枚举比OC中的枚举强大, 因为Swift中的枚举是一等类型, 它可以像类和结构体一样增加属性和方法 格式: enum Method{ case 枚举值 } */ enum Method{ //    case Add //    case Sub //    case Mul //    case Div // 可以连在一起写 case Add, Sub, Mul, Div } // 可以使用枚举类型变量或常量接收枚举值

swift 类 与 结构体

这两天突然有人问我  swift里面 类和 结构体  有什么区别? 说实在的本人目前不太看好swift,相信很多人也是,oc 都 很成熟了. 本人目前不打算深入了解swift的原因swift  语言 虽然也已经出来很久了,但是总感觉还有许多东西 不如oc稳定.  每个 版本的 swift  都会有比较大的变动. 所以干脆先等等,等到工作不忙 swift也稳定了,然后再看也不迟. 但是 有些里面已经稳定了的东西可以先作为了解内容.  今天就说下类  和  结构体. http://c.bianche

iOS学习笔记44-Swift(四)枚举和结构体

一.Swift的枚举 枚举是一系相关联的值定义的一个公共的组类型,同时能够让你在编程的时候在类型安全的情况下去使用这些值. Swift中的枚举比OC中的枚举强大得多, 因为Swift中的枚举是一等类型,它除了可以定义枚举值外,还可以在枚举中像类一样定义属性和方法 1. 简单枚举定义和使用 //定义枚举,使用enum关键字 enum Method{ case Add case Sub case Mul case Div } //可以连在一起写,成员之间用","隔开 enum Compas

【C】枚举,以及枚举和结构体的不同

枚举实际意义跟汉语意义没有多少相似的地方,而且容易让人想起穷举. 学完枚举基本就把几个基本的数据类型学完了哈 穷举……呸,枚举和结构体的结构类似 struct stuent { int age; float height; }; enum{ FIR, SCD, THD }; 但不同很多,如下 1,定义结构体是定义一个数据类型,之后,声明的是结构体变量,结构体变量本身只能被赋值于另一个结构体变量,而且两个结构变量必须是同一种结构,但结构变量之内的变量是可以被赋值的.而且结构体变量声明所用的标示符并