//创建姓氏枚举,和Objective-C不同,Swift枚举不会默认分配值
enum Surname {
case 张
case 王
case 李
case 赵
}
//创建一个枚举类型的变量
var myName = Surname.张
//如果可以自动推断出类型 则枚举类型可以省略
myName = .李
var myName2:Surname = .王
enum Planet {
case Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune
}
switch myName {
case .张:
print("姓氏张")
case .王:
print("姓氏王")
case .李:
print("姓氏李")
case .赵:
print("姓氏赵")
}
enum Number {
case one(count:Int)
case two(count:Int)
case three(count:Int)
case four(count:Int)
}
var num = Number.one(count: 5)
switch num {
//获取num的相关值
case Number.one(let count):
print(count)
default:
print(num)
}
//如果一个枚举值所有的相关中都是常量,let关键字也可以提取到括号外面
switch num {
//获取num的相关值
case let Number.one(count):
print(count)
default:
print(num)
}
enum Char:String {
case a = "A"
case b = "B"
case c = "C"
}
//”A“
var char = Char.a.rawValue
enum Char:Int{
case a = 0
case b
case c
}
//1
var char = Char.b.rawValue
enum Char:Int{
case a = 0
case b
case c
}
//1
var char = Char.b.rawValue
//b
var char2 = Char(rawValue:1)
enum Expression {
//表示加
case add
//表示减
case mul
}
enum Expression {
//表示加
case add(Int,Int)
//表示减
case mul(Int,Int)
}
var exp = Expression.add(5, 5)
enum Expression {
//单值数据
case num(Int)
//表示加 indirect为递归枚举关键字
indirect case add(Expression,Expression)
//表示减
indirect case mul(Expression,Expression)
}
var exp1 = Expression.num(5)
var exp2 = Expression.num(5)
var exp3 = Expression.add(exp1, exp2)
var exp4 = Expression.mul(exp1, exp3)
func expFunc(param:Expression) -> Int {
//进行枚举判断
switch param {
//如果是单独数字 直接返回
case .num(let p):
return p
//如果是加法 则进行递归加
case .add(let one, let two):
return expFunc(one)+expFunc(two)
//如果是乘法 则进行递归乘
case .mul(let one, let two):
return expFunc(one)*expFunc(two)
}
}
//50
expFunc(exp4)
indirect enum Expression {
//单值数据
case num(Int)
//表示加 indirect为递归枚举关键字
case add(Expression,Expression)
//表示减
case mul(Expression,Expression)
}
enum CompassPoint {
case North
case South
case East
case West
}
enum Planet {
case Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune
}
var directionToHead = CompassPoint.West //directionToHead是一个CompassPoint类型,可以被赋值为该类型的其他值 //当设置directionToHead的值时,他的类型是已知的,因此可以省略East的类型 directionToHead = .East
directionToHead = .South
switch directionToHead {
case .North:
println("Lots of planets have a north")
case .South:
println("Watch out for penguins")
case .East:
println("Where the sun rises")
case .West:
println("Where the skies are blue")
}
// 打印 "Watch out for penguins"
enum Barcode {
case UPCA(Int, Int, Int)
case QRCode(String)
}
//定义一个变量。该变量即可被赋值为3个整数,又可被赋值为一个字符串,但都是Barcode类型的枚举值
var productBarcode = Barcode.UPCA(8, 85909_51226, 3)
productBarcode = .QRCode("ABCDEFGHIJKLMNOP")
//使用switch时,case内可区分条形码种类,可使用变量或常量获得结合值
switch productBarcode {
case .UPCA(let numberSystem, let identifier, let check):
println("UPC-A with value of \(numberSystem), \(identifier), \(check).")
case .QRCode(let productCode):
println("QR code with value of \(productCode).")
}
// 打印 "QR code with value of ABCDEFGHIJKLMNOP."
case let .UPCA(numberSystem, identifier, check):
//原始值枚举的类型紧跟枚举名后,其成员的原始值的数据类型都是这个指定的类型
enum ASCIIControlCharacter: Character {
case Tab = "\t"
case LineFeed = "\n"
case CarriageReturn = "\r"
}
//Int类型的原始值枚举成员的原始值是递增的,比如Venus的值是2,Earth的值是3
enum Planet: Int {
case Mercury = 1, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune
}
//可以通过toRaw方法获得枚举成员的原始值
let earthsOrder = Planet.Earth.toRaw()
// earthsOrder 的值是 3,数据类型是Int
//可以通过fromRaw方法获得原始值对应的枚举成员
let possiblePlanet = Planet.fromRaw(7)
// possiblePlanet 的数据类型 Planet? 值是 Planet.Uranus
//因为fromRaw的原始值可能没有对应的枚举成员,所以返回的类型是一个可选变量值
let positionToFind = 9
if let somePlanet = Planet.fromRaw(positionToFind) {
switch somePlanet {
case .Earth:
println("Mostly harmless")
default:
println("Not a safe place for humans")
}
} else {
println("There isn't a planet at position \(positionToFind)")
}
// 枚举定义中没有原始值为9的成员,所以打印 "There isn't a planet at position 9"
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有