Swift语法基础:5 - Swift的枚举和结构体
来源:互联网 发布:php大转盘源码 编辑:程序博客网 时间:2024/05/31 19:26
在Siwft中的枚举类型以及结构体, 是和OC中差不多的, 但Swift中又有一些特性, 下面让我们来看看:
1.枚举的声明及使用
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{ case .Ace: return "ace" case .Jack: return "jack" case .Queen: return "queen" case .King: return "King" default: return String(self.rawValue) } }}let ace = Rank.Kinglet aceRawValue = ace.rawValueprintln("\(ace), \(aceRawValue)")// 打印出来的结果: (Enum Value), 13
PS: 这里解释一下, 枚举类型第一个开始的参数都是1, 无论你是有多少case, 都会递增的, 比如例子的的Ace是1, 那么Two就是名副其实的2, Three就是3, 以此类推, 一直到King, 就是13, 而enum里面有一个方法, 这里面这个方法只是说可以在enum里定义方法, 但我这个例子并没有使用.
2.枚举类型内添加Func方法以及Enum的时值
enum Suit { case Spades, Hearts, Diamonds, Clubs case a func simpleDescription() -> String { switch self{ case .Spades: return "spades" case .Hearts: return "hearts" case .Diamonds: return "diamonds" case .Clubs: return "clubs" default: return "a" } }}let hearts = Suit.Heartslet heartsDescription = hearts.simpleDescription()let spades = Suit.Spades.hashValuelet a = Suit.a.hashValueprintln("spades is \(spades),a is \(a),\(heartsDescription)")// 打印出来的结果:spades is 0, a is 4, hearts
PS: 看到例子中, 我们知道enum是有时值的, 这个时值是从0 开始, 一直到最后一位, 而且不受enum里面有多少个case影响.
3.结构体的声明和使用
struct Card { var rank: Rank var suit : Suit func simpleDescription() -> String { return "The \(rank.simpleDescription()) of \(suit.simpleDescription())" }}let threeOfSpades = Card(rank: .Three, suit: .Spades)let threeOfSpadesDescription = threeOfSpades.simpleDescription()println(threeOfSpadesDescription)// 打印出来的结果: The 3 of spades
PS: 结构体里面同样是可以嵌套Func方法使用.
4.使用枚举类型获取时间
enum ServerResponse{ case Result(String, String) case Error(String)}let success = ServerResponse.Result("8:00 am", "18:00")let failure = ServerResponse.Error("Out of cheese")switch success {case let .Result(sunrise, sunset): let serverResponse = "Sunriseis at \(sunrise) and sunset is at \(sunset)." println(serverResponse)case let .Error(error): let serverResponse = "Failure... \(error)" println(serverResponse)}// 打印出来的结果: Sunriseis at 8:00 am and sunset is at 18:00.
PS: 在case let .Result()里面的sunrise和sunset是我们自己定义的, 这个可以根据个人爱好随意声明, 但如果是团队开发的话, 那就不要随便写了, 你懂的~
好了, 这次我们就讲到这里, 下次我们继续~
0 0
- Swift语法基础:5 - Swift的枚举和结构体
- Swift基础语法: 25 - Swift的类和结构体
- swift 枚举和结构体
- Swift-枚举和结构体
- Swift枚举和结构体
- Swift 枚举和结构体
- Swift基础语法: 24 - Swift的枚举语法, 匹配枚举值和 Switch 语句, 关联值, 原始值
- 第五节 Swift 枚举和结构体
- swift入门 枚举和结构体
- Swift语言中的枚举和结构体
- Swift的闭包,枚举,类和结构体
- swift的枚举、结构体、协议和延展
- Swift2学习:Swift概览5-枚举和结构体
- Swift语法基础:3 - Swift的函数和闭包
- Swift语法基础:6 - Swift的Protocol和Extensions
- Swift 基础学习(枚举基本语法)
- Swift-枚举、结构体、类
- Swift语法基础:7 - Swift的Generics
- Unity3D技术之用程序生成网格几何体-示例–创建一个广告牌
- 换零钱问题迭代解法
- AngularJs自学笔记(2)
- Unity3D技术之用程序生成网格几何体-使用网格类浅析
- 阿里巴巴内推实习生电话面试
- Swift语法基础:5 - Swift的枚举和结构体
- java 如何获取线程和线程组
- Linux生成桌面图标
- linux下部署jenkins
- Tab形式的菜单实现总结TabHost 和 FragmentTabHost
- Android编译jar和指定目标文件
- HDU 1017 A Mathematical Curiosity
- js判断ip地址是否正确
- git-忽略指定文件