//// main.swift// Swift面向对象-枚举//// Created by Goddog on 15/5/30.// copyright (c) 2015年 Goddog. All rights reserved.///*1.Swift的枚举不像C那样简单,也不像Java的枚举(其实Java的枚举是一种特殊的类);2.Swift的枚举是完全重新定义的一个类型,管理一组有限值的集合;3.Swift的枚举具有面向对象的特征,支持计算属性、支持实例方法和类方法、支持定义构造器来完成初始化;4.Swift可通过扩展来增强原有枚举的功能,允许通过指定协议来提供标准的功能。*/import Foundation/*** 使用多个个case列出多个实例*/enum Season{ case Spring case Summer case Fall case Winter}/*** 使用一个case列出多个实例(我喜欢这种写法)*/enum Weekday{ case Monday,Tuesday,Wednessday,Thursday,FrIDay,Saturday,Sunday}//使用枚举声明变量var sn : Seasonvar wd : Weekday//已有的枚举实例赋值sn = Season.Summerwd = .Saturday //还可以这样省略哦//枚举值和Switch一起使用switch(wd){ case .Monday: println("周一,上班") case .Tuesday: println("周二") case .Wednessday: println("周三") case .Thursday: println("周四") case .FrIDay: println("周五") case .Saturday: println("周六") case .Sunday: println("周日") }switch(wd){ case .Monday: println("上班咯") case .Tuesday,.Wednessday,.Thursday: //hi,还可以这样子写,java可没这种写法哦 println("周二、周三、周四") default: println("周五呢还是放假咯")}/** 原始值1.枚举要么所有的都指定原始值、要么完全不指定原始值;2.原始值可以自动判断,也可以显示指定;*///定义枚举,并制定该枚举原始值的类型为Intenum Numbers : Int{ //用case列出六个枚举实例 case one,two = 2,four = 4,five,six,seven //系统自动判断 //这个地方程序会自动推断one=1,five=5,seven=7 特别神奇}//如果非Int类型,比如事String、Characterenum Human : Character{ case Man = "M" //Human都是显示指定 case Woman = "W"}var num = Numbers.five//获取枚举的原始值println("five的原始值是\(num.rawValue)")//根据原始值获取枚举值var myHuman = Human(rawValue: "W")if myHuman != nil{ switch(myHuman!) //注意:使用!进行强制解析 { case .Man: println("男人") case .Woman: println("女人") }}/** 关联值1.关联值可以称为“属性值”或"成员值",各个实例的内部状态:比如上面的男人有哪些特质(胡子,.....)*///定义枚举enum Planet{ //不同的枚举可以携带数量不等、类型不等的关联值 case Mercury(weight:Double,density:Double,name:String) //还指定了名称哦 case Earth(Double,String) case Saturn}var mercury = Planet.Mercury(weight: 0.05,density: 5.43,name: "水星")var venus = Planet.Earth(1.0,"地球")var saturn = Planet.Saturn//如果程序要访问枚举的关联值,那就需要声明额外的变量和常量,并将枚举值的关联值绑定到这些变量和常量。switch(venus){ case Planet.Earth(var weight,var name): println("该行星的名字为:\(name),质量是\(weight)") default: break}//如果打算将某个枚举值的所有关联值都提取为变量和常量,也可以将一个var或let放置在枚举成员之前即可switch(mercury){ //将Planet.Earth的关联值绑定到weight、density常量 case let .Earth(weight,density): println("该行星的质量相当于:\(weight)个地球,密度为\(density)") //将Planet.Mercury的关联值绑定到w、d、n常量 case let .Mercury(weight:w,density:d,name:n): println("该行星的质量\(w),密度\(d),名字\(n)") default: break}println("Hello,World!")总结
以上是内存溢出为你收集整理的Swift面向对象-枚举全部内容,希望文章能够帮你解决Swift面向对象-枚举所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)