Swift面向对象基础(上)——Swift中的枚举
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中的枚举的更多相关文章
- Swift面向对象基础(上)——Swift中的类和结构体(上)
学习来自<极客学院> import Foundation //1.定义类和结构体 /* [修饰符]calss 类名{ 零到多个构造器 零到多个属性 零到多个方法 零到多个下标 } 修饰符可 ...
- Swift面向对象基础(上)——Swift中的类和结构体(下)
学习来自<极客学院> import Foundation class User { var name:String var age:Int init(name:String,age:Int ...
- Swift面向对象基础(中)——Swift中的方法
学习来自<极客学院> 1.定义方法需要在类型(枚举,结构体,类)里定义,不能独立定义,独立定义的是函数 2.方法要么属于该类型本身,要么是该类型的一个实例 3.不能独立执行方法,执行方法必 ...
- Swift面向对象基础(中)——Swift中的存储属性和计算属性
学习来自<极客学院> 1.存储属性:存储在类.结构体里的变量或者常量 2.分为:实例存储属性.类型存储属性 3.所有的存储属性必须显示的指定初始值,在定义时或者构造器当中指定 4.可选类型 ...
- swift 学习(三)(面向对象基础)
面向对象的基本特征包括:封装,继承,多态 在swift中,类,结构,枚举都具有面向对象特性 但结构和枚举的实例不称为对象,因为结构和枚举不是彻底的面向对象类型,比如他们不能继承. 结构体 struct ...
- ios开发中的Swift面向对象
iOS在现代计算机语言中,面向对象是非常重要的特性,Swift语言也提供了面向对象的支持.而且在Swift语言中,不仅类具有面向对象特性,结构体和枚举也都具有面向对象特性. 1.Swift中的类和结构 ...
- Swift基础之OC文件调用Swift代码(在上次的基础上写的)
前两天刚写过Swift调用OC,今天在原来的基础上,实现OC调用Swift. 首先,创建一个OneSwiftFile.swift文件,创建一个继承于NSObject的类(这个地方你可以自己选择继承的父 ...
- Swift 面向对象解析(一)
面向对象总体概括: Swift 不仅能够面向过程编程,也能够面向对象编程(OOP).面向对象其实就是“以对象为核心”,把我们的客观世界想着是由一个个对象组成的,面向对象编程则为对象提供了属性和方法,属 ...
- iOS - Swift 面向对象语法
1.面向对象 面向过程:面向过程编成将所要解决的问题按解决问题的步骤进行分析.如果是大问题,就分解成为多个不同的小问题,在程序里叫做划分成不同的模块.每一个解决的步骤可能是一行或者几行代码,也可能是一 ...
随机推荐
- weblogic集群中获取jndi的方式
# The following example specifies a list of WebLogic Servers using the same port: ht.put(Context.PRO ...
- 【转载】Linux动态库搜索路径的技巧
转自:http://soft.chinabyte.com/os/232/11488732_2.shtml 众所周知,Linux动 态库的默认搜索路径是/lib和/usr/lib.动态库被创建后,一般都 ...
- JavaScript中的数组详解
JavaScript中的数组 一.数组的定义 数组是值的有序集合,或者说数组都是数据的有序列表. 二.创建数组 [字面量形式] 1.空数组 var arr=[]; 2.带有元素的数组 var arr= ...
- C# 通过Get、Post、Soap调用WebService的方法
实现代码来源于网络,我只是作了一些修改! using System; using System.Web; using System.Xml; using System.Collections; usi ...
- UVA题目分类
题目 Volume 0. Getting Started 开始10055 - Hashmat the Brave Warrior 10071 - Back to High School Physics ...
- C#中override和new修饰符的区别
(new)“隐藏”,(override)“覆盖”(重写).不过要弄清楚这两个有什么区别确实也很难,因为子类在使用父类方法时根本看不出区别,子类不管父类是new了还是override了,用的都是父类方法 ...
- WPF关闭应用程序方法
很多人认为关闭应用程序应该很简单,例如WindowsForm里一个Application.Exit();方法就可以解决问题,但在WPF里面可别滥用,因为WPF里Application类没有该方法,倒是 ...
- Dev TreeList设置焦点失败解决方法
问题描述 对TreeList初始化之后,设置treelist的焦点节点时,发现每次初始化控件的时不能正确的绑定焦点节点,第二次点开treelist的时候才会正常的设置目标节点为焦点节点. 截图 解决方 ...
- cURL POST command line on WINDOWS RESTful service
26down votefavorite 7 My problem: Running windows 7 and using the executable command line tool to cu ...
- Hibernate Validator
http://docs.jboss.org/hibernate/validator/4.2/reference/zh-CN/html_single/#example-group-interfaces