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. str()和repre()的区别

    应用中的区别: %s 就是调用str()——用于显示字符串 %r 就是调用repr()——用于调试时显示 str()一般是将数值转成字符串. repr()是将一个对象转成字符串显示,注意只是显示用,有 ...

  2. 复利程序(c语言)(张俊毅 周修文)

    因为之前发烧一直没有了解这个 所以最近才补上 分数扣了就扣了 补上先 单元测试迟点更 #include<stdio.h> #include <math.h> #include ...

  3. 面向对象的Javascript(4):重载

    在小项目中对于JavaScript使用,只要写几个function就行了.但在大型项目中,尤其是在开发追求 良好的用户体验的网站中,如SNS,就会 用到大量的JavaScrpt,有时JavaScrip ...

  4. [CLR via C#]9. 参数

    一.可选参数和命名参数 在设计一个方法的参数时,可为部分或全部参数分配默认值.然后,调用这些方法的代码时可以选择不指定部分实参,接受默认值.此外,调用方法时,还可以通过指定参数名称的方式为其传递实参. ...

  5. C#中部分方法返回值类型为什么只能是void?

    这个问题答案选至<C#入门经典> 如果方法具有返回类型,那就可以作为表达式的一部分: x=Manipulate(y,z); 如果没有给部分方法提供实现代码,编译器就会在使用该方法的所有地方 ...

  6. springMVC全局Exception异常处理SimpleMappingExceptionResolver

    继承了SimpleMappingExceptionResolver 贴上代码 /** * 对controller异常进行全局处理 * 区分了对普通请求和ajax请求的异常处理,普通请求返回到配置的er ...

  7. 做java工作整整1年了,看到了大牛的奋斗历程,我感觉自己又有目标了

    2014年6月,刚刚踏上社会那会儿,我记得我第一次面试啥都不知道,穿的也不修边幅去应聘一家4s销售,面试官看到我,我明细感觉到了对方厌恶的神色,这是我上社会的第一课,找工作不管是什么工作,衣着得体,是 ...

  8. 树状数组---Squared Permutation

    BNUOJ   51636 最近,无聊的过河船同学在玩一种奇怪的名为“小Q的恶作剧”的纸牌游戏. 现在过河船同学手有张牌,分别写着,打乱顺序之后排成一行,位置从左往右按照标号. 接下来小Q同学会给出个 ...

  9. yii2时间日期控件的使用[转]

    注:原文http://www.manks.top/yii2-datetimepicker.html 有更改 1.安装 进入到项目文件中D:\phpStudy\WWW\yii2blog    使用cmd ...

  10. 那些教程没有的php3-命名空间

    php.net (PHP 5 >= 5.3.0, PHP 7) 定义命名空间 虽然任意合法的PHP代码都可以包含在命名空间中,但只有以下类型的代码受命名空间的影响,它们是:类(包括抽象类和tra ...