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. cp: omitting directory”错误

    在linux下拷贝的时候有时候会出现cp:omitting directory的错误 , 是因为目录下面还有子目录,不能直接拷贝 解决办法: 命令:cp -r 

  2. Linux动态库的搜索路径

    下面是目录结构: pengdl@localhost:~$ tree test/test/├── fun.c├── Fun.h└── t1    └── main.c 1 directory, 3 fi ...

  3. HMM 自学教程(八)总结

    本系列文章摘自 52nlp(我爱自然语言处理: http://www.52nlp.cn/),原文链接在HMM 学习最佳范例,这是针对国外网站上一个 HMM 教程的翻译,作者功底很深,翻译得很精彩,且在 ...

  4. Cocos2dx-3.0版本 从开发环境搭建(Win32)到项目移植Android平台过程详解

    作为重量级的跨平台开发的游戏引擎,Cocos2d-x在现今的手游开发领域占有重要地位.那么问题来了,作为Cocos2dx的学习者,它的可移植特性我们就需要掌握,要不然总觉得少一门技能.然而这个时候各种 ...

  5. Spring MVC 配置文件dispatcher-servlet.xml 文件详解

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  6. 使用RazorEngine对ASP.NET MVC的Views进行UnitTest

    有的时候我们需要对Razor最后生产的文本(HTML OR XML OR..)进行单元测试. 使用Nuget安装RazorEngine. 新建一个ASP.NET MVC项目,并且带有测试项目. 修改I ...

  7. 网狐6603手机棋牌游戏源码.rar

    网狐6603手机棋牌游戏源码.rar   文件大小: 333 MB 发布一款手机棋牌游戏源码带教程文档! 仅供学习,下载后请务必在24小时内删除! 网狐6603手机棋牌游戏源码 链接:http://p ...

  8. .Net实现微信公众平台开发接口(三) 之 “信息回复”

    对于每一个POST请求,开发者在响应包(Get)中返回特定XML结构,对该消息进行响应(现支持回复文本.图片.图文.语音.视频.音乐).请注意,回复图片等多媒体消息时需要预先上传多媒体文件到微信服务器 ...

  9. 百度地图刷新显示不完整?(应该是和div顺序有关系)

    解决方案:1异步加载(jquery(function(){loadJScript():}))   2解析加载设置了个延迟(setTimeOut(getInit,1000))

  10. C# Web Forms - Using jQuery FullCalendar

    <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> ...