Swift入门教程系列8-枚举

本文深入探讨了Swift中枚举的定义、访问、相关属性、原始值、计算属性和方法扩展,提供了实例简析并展示了如何在实际场景中应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

枚举定义了一组相关的值
C语言中枚举为一组整数
在swift中,不需要给枚举成员提供值,如果提供,这个值可以是一个字符串,一个字符,整数
或者浮点数。
在swift中,枚举类型具有很多class支持的特征,比如计算属性,实例方法,构造函数,也支
持扩展和协议
所以,在swfit中,枚举可以做的事情很多

一、定义枚举
每个枚举定义了一个新的类型,所以开头必须是一个大写字母
注意,在枚举创建的时候并不默认的赋予一个整数,在一行定义多个的成员的时候要用逗号隔开
enum BluetoothState{
case ON,OFF,UNSupport
}
enum BluetoothState{
case ON
case OFF
case UNSupport
}

访问的方式
var currentState = BluetoothState.ON
在第一次赋值之后,由于swift具有类型推断,所以第二次的调用可以省略枚举名称
currentState = .OFF
二、枚举相关值
就是为枚举的每个成员设定一个常量或者变量,在之后访问这个值,不同的成员的相关值类型可
以不同
enum personID{
    case NumID(Int,Int)
    case StrID(String)
}
定义一个枚举,公司有两种方式区分一个人,分别是(部门编号,成员编号)和工号
比如,(12,234)和 工号84366代表的是同一个人
var expPerson = personID.StrID("84366")
switch expPerson {
  case .NumID(let first,let second):
println("from string")
  case .StrID(let num):
println("from int int")
}
三、原始值
就是在枚举定义的时候给每个成员一个原始值,这个原始值具有相同的类型
如果原始值类型为整形,则当给第一个赋值之后,之后的会自动递增
enum Num:Int{
    case zero = 0
    case one
    case two
}
访问原始值
let rawData = Num.zero.toRaw()
也可以通过原始值访问枚举
let oneNum = Num.fromRaw(2)
四、计算属性方法实例简析
这里要说明的是,如果原始值对实际的用的过程中来说无意义,就不需要设为原始值。
举个例子:仍然以蓝牙为例,蓝牙状态有三个On,Off,Unsupport,如果你有一个数组分别0对

应On,1对应Off,2对应Unsupport,那么原始值是有意义的。否则是不需要设原始值的。

为枚举添加方法

eunm HwcNum:Int{
   case zero = 0,one,two,three,four,five,six,seven,eight,nine
   func descriptionInString()->String{
	switch self{
                case .zero:
			return "zero"
		case .one:
			return "one"
		default:
			return "Other"
		}
   	}
}


扩展枚举

extension HwcNum{  
    subscript (Index:Int) -> String {  
        get {  
            switch Index{
		case 0:
			return "Zero"
		case 1:
			return "One"
		default:
			return "Other"
 		  } 
        }  
}  
}

这样扩展之后,enum就额外的支持下标访问

这样使用这个枚举

var expNum = HwcNum.zero
var zeroDescription = expNum.descriptionInString()
var indexString = expNum[0]

这样使用,当然实际过程中这么扩展没什么意义,仅仅做个参考


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值