Swift中枚举

学习笔记来自《极客学院》

 import Foundation

 /**********1*Swift定义枚举的语法格式*************/
/*
enum 枚举名 {
使用case关键字列出所有枚举值
枚举的其他成员
}
*/
//定义枚举
enum Season{
case Spring
case Summer
case Fall
case Winter
}
//使用一个case列举所有的值
enum Season2{
case Spring,Summer,Fall,Winter
}
//使用枚举声明变量
var weather : Season//这里就是声明一个Season 类型的变量weather
weather = .Summer//或者是:weather = Season.Summer
println("1:\(weather)") var enum_1 = Season.Winter//直接用类型推断也可以
switch(enum_1){
case .Spring:
println(Season.Spring)
case .Summer:
println(Season.Summer)
default:
println("在家里")
}//switch中的case没有覆盖枚举的所有值,必须添加default语句,也就是说如果列出了枚举所有的值,就可以删掉default语句了 /**********2*原始值*************/
/*
enum 枚举值 : 原始值类型{
case 枚举值 = 原始值
}
*/
enum Weekday : Int{
case Mon,Tur,Wen = ,Thur,Fri,Sat,Sun
}//因为这里都是整形所以会自动推断他们分别是1~7
println(Weekday.Wen)//不知道结果为甚是这样的:(Enum Value) //所以获取枚举的 原始值
println(Weekday.Mon.rawValue)
println(Weekday.Tur.hashValue) enum Season3 : Character{
case Spring = "春"
case Summer = "夏"
case Fall = "秋"
case Winter = "冬"
}//但是上面类型的推断仅仅局限在整型的情况下,swift会自动推断 //根据原始值来获取枚举值,调用的事构造器,这个构造器是可选类型:init?(rawValue:)
var mySeason = Season3(rawValue: "秋")
if mySeason != nil{
switch(mySeason!){//需要间接解包
case .Spring:
println("春天不是读书天")
case .Summer:
println("夏天炎炎正好呢")
case .Fall,.Winter: //这里表示“或”
println("秋多蚊蝇冬日冷")
default:
println("读书只好等明年")
}
} /**********3*关联值*************/
//在每个枚举值后面添加括号扩起来的关联值,然后关联值个数是0~多个,然后定义类型值,当然也可以仅仅只有类型,不需要关联值名称
enum Planet {
case Earth(weight: Double,name: String)
case Mars(density: Double,name:String,weight:Double)
case Venus(Double,String)
case Saturn
case Neptune
}//其实这后面括号扩起来的就是元祖
//获取枚举值,系统还会自动提示,这个操作一下就能明白了
var p1 = Planet.Earth(weight: , name: "hah")
//接下来就是得到这些关联值,要得到这些关联值,就要声明额外的变量
//但是下面直接用的是switch语句
switch(p1){
case Planet.Earth(var weight,var name):
println("\(name)~~~~~~~~~\(weight)")
case let Planet.Mars(density:d,name:n,weight:dou):
println("\(d)")
default:
break
}

Swift面向对象基础(上)——Swift中的枚举的更多相关文章

  1. Swift面向对象基础(上)——Swift中的类和结构体(上)

    学习来自<极客学院> import Foundation //1.定义类和结构体 /* [修饰符]calss 类名{ 零到多个构造器 零到多个属性 零到多个方法 零到多个下标 } 修饰符可 ...

  2. Swift面向对象基础(上)——Swift中的类和结构体(下)

    学习来自<极客学院> import Foundation class User { var name:String var age:Int init(name:String,age:Int ...

  3. Swift面向对象基础(中)——Swift中的方法

    学习来自<极客学院> 1.定义方法需要在类型(枚举,结构体,类)里定义,不能独立定义,独立定义的是函数 2.方法要么属于该类型本身,要么是该类型的一个实例 3.不能独立执行方法,执行方法必 ...

  4. Swift面向对象基础(中)——Swift中的存储属性和计算属性

    学习来自<极客学院> 1.存储属性:存储在类.结构体里的变量或者常量 2.分为:实例存储属性.类型存储属性 3.所有的存储属性必须显示的指定初始值,在定义时或者构造器当中指定 4.可选类型 ...

  5. swift 学习(三)(面向对象基础)

    面向对象的基本特征包括:封装,继承,多态 在swift中,类,结构,枚举都具有面向对象特性 但结构和枚举的实例不称为对象,因为结构和枚举不是彻底的面向对象类型,比如他们不能继承. 结构体 struct ...

  6. ios开发中的Swift面向对象

    iOS在现代计算机语言中,面向对象是非常重要的特性,Swift语言也提供了面向对象的支持.而且在Swift语言中,不仅类具有面向对象特性,结构体和枚举也都具有面向对象特性. 1.Swift中的类和结构 ...

  7. Swift基础之OC文件调用Swift代码(在上次的基础上写的)

    前两天刚写过Swift调用OC,今天在原来的基础上,实现OC调用Swift. 首先,创建一个OneSwiftFile.swift文件,创建一个继承于NSObject的类(这个地方你可以自己选择继承的父 ...

  8. Swift 面向对象解析(一)

    面向对象总体概括: Swift 不仅能够面向过程编程,也能够面向对象编程(OOP).面向对象其实就是“以对象为核心”,把我们的客观世界想着是由一个个对象组成的,面向对象编程则为对象提供了属性和方法,属 ...

  9. iOS - Swift 面向对象语法

    1.面向对象 面向过程:面向过程编成将所要解决的问题按解决问题的步骤进行分析.如果是大问题,就分解成为多个不同的小问题,在程序里叫做划分成不同的模块.每一个解决的步骤可能是一行或者几行代码,也可能是一 ...

随机推荐

  1. iOS-文字自适应

    1.自动改变Label的宽和高 - (void)createLabel1 { UILabel * label = [[UILabel alloc] initWithFrame:CGRectZero]; ...

  2. Android 简单计算器源码....

    PS:今天算是闲着没事做了一个小型的计算器...顺便熟悉一下Android的布局,组件,以及时间监听的方法...就当是做了一个小小的练习吧...     顺便去对比了一下别人写的代码...有的使用到了 ...

  3. 用Qt写软件系列三:一个简单的系统工具之界面美化

    前言 在上一篇中,我们基本上完成了主要功能的实现,剩下的一些导出.进程子模块信息等功能,留到后面再来慢慢实现.这一篇来讲述如何对主界面进行个性化的定制.Qt库提供的只是最基本的组件功能,使用这些组件开 ...

  4. wpf 自定义消息框

    相信很多人用过MessageBox.show(),是不是觉得这个消息框有点丑呢,反正我是觉得有点丑的,所以我自己重写了一个.先不说,上两幅图对比先: 当然,也不是很好看,不过比原有的好多了. 不多说了 ...

  5. Winform调用QQ发信息并且开机启动 (开源)

    前言 公司CS系统需要加入启动qq从winform调用qq聊天窗口的功能,前提是需要将聊天者的QQ号码作为参数传递到函数中,一直没有搞过,正好很感兴趣,就折腾,Winform调用qq,我想肯定是需要一 ...

  6. EntityFramework left join

       var result = from u in db.Order                              join n in db.Equipment on u.OrderId  ...

  7. u-boot移植总结(三)(转)S3C2440对Nand Flash操作和电路原理(基于K9F2G08U0A)

    S3C2440对Nand Flash操作和电路原理(基于K9F2G08U0A) 转载自:http://www.cnblogs.com/idle_man/archive/2010/12/23/19153 ...

  8. 泛函编程(12)-数据流-Stream

    在前面的章节中我们介绍了List,也讨论了List的数据结构和操作函数.List这个东西从外表看上去挺美,但在现实中使用起来却可能很不实在.为什么?有两方面:其一,我们可以发现所有List的操作都是在 ...

  9. CountDownLatch,CyclicBarrier,Semaphore

    CountDownLatch是倒数,doneSignal = new CountDownLatch(LATCH_SIZE);赋初值后,在主线程中等待doneSignal.await();其它线程中,每 ...

  10. php生成静态文件

    1,通用生成方法 //获取文件内容 $content=file_get_contents("http://www.google.com/" ); $id=110; $filenam ...