Swift面向对象-枚举
发布时间:2020-12-14 02:10:23 所属栏目:百科 来源:网络整理
导读://// main.swift// Swift面向对象-枚举//// Created by Goddog on 15/5/30.// Copyright (c) 2015年 Goddog. All rights reserved.///*1.Swift的枚举不像C那样简单,也不像Java的枚举(其实Java的枚举是一种特殊的类);2.Swift的枚举是完全重新定义的一个类型
// // 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 : Season var wd : Weekday //已有的枚举实例赋值 sn = Season.Summer wd = .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.原始值可以自动判断,也可以显示指定; */ //定义枚举,并制定该枚举原始值的类型为Int enum Numbers : Int { //用case列出六个枚举实例 case one,two = 2,four = 4,five,six,seven //系统自动判断 //这个地方程序会自动推断one=1,five=5,seven=7 特别神奇 } //如果非Int类型,比如事String、Character enum 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!") (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |