您的位置:首页 > 移动开发 > Swift

Swift学习笔记——枚举

2015-08-23 16:21 501 查看
swift 中普通的枚举形式

// 枚举形式,case关键词表明新的一行成员值将被定义
enum Direction {
case North
case South
case East
case Weast
}
// 注意:在 swift 中,枚举的成员变量有着不同的值,他们不再是0,1,2,3 了

// 多个成员值也可以出现在同一行上,但是要用逗号隔开
enum Direction { case North,South,East,Weast };

// 这一句过后,unKnowDirection 就会被推断是 Direction 的一个可能值
var unKnowDirection = Direction.Weast

// 一旦 unKnowDirection 被声明成一个 Direction ,就可以使用(.)语法将其设置成另一个 Direction 的值
unKnowDirection = .East

switch unKnowDirection{
case .North:
println("is North")
case .South:
println("is South")
case .East:
println("is East")
case .Weast:
println("is Weast")
}
// "is East"


相关值

enum ShopCode{
case UPCA(Int,Int,Int)
case QRCode(String)
}

// let productCode = ShopCode.UPCA(8, 568_4556, 3)
let productCode = ShopCode.QRCode("ABCDEFG")

// 你可以在 switch 的 case 分支代码中提取每个相关值作为一个常量(用let前序)或作为一个变量(用 var 前序)来使用
switch productCode{
case let .UPCA( numberSystem,  identifier,  check ):
println("UPCA is \(numberSystem) and \(identifier) and \(check)" )
case let .QRCode(productCode):
println("i am so sorry is \(productCode)")
}

// "i am so sorry is ABCDEFG"


原始值

// 原始值可以是字符串,字符,或者任何整型值或浮点型值
enum ShopType:Int{
case income = 1
case pay
case free
}

// 使用枚举成员的 rawValue 属性可以访问该枚举成员的原始值,只有具有原始值的枚举成员才有 rawValue 属性
let type = ShopType.income.rawValue

// 也可以通过参数 rawValue 来创建定原始值的枚举
let type2 = ShopType(rawValue: 3)
type2?.rawValue // 3
// 然而,并非所有可能的Int值都可以找到一个匹配的成员。正因为如此,构造函数可以返回一个可选的枚举成员。在上面的例子中,type2是ShopType?类型,或“可选的ShopType”。

// 如果通过构造函数 rawValue 来创建原始值枚举并作为条件需找,那么可选值 type3 为 .free,不再是 nil
let typeToFind = 3
if let type3 = ShopType(rawValue: typeToFind){ // ?为可选值
switch type3{
case .income:
println("income")
case .free:
println("free")
default :
println("nothing")
}
}else{
println("there is no find anything with \(typeToFind)")
}

// "free"


// 注意:相关值与原始值不同点是:
//相关值是当你在创建一个基于枚举成员的新常量或变量时才会被设置,并且每次当你这么做得时候,它的值可以是不同的
//原始值是当你开始在你的代码中定义枚举的时候原始值是被预先填充的值
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: