**
枚举
**
swift的枚举类型是一系列的值,不同于c语言中枚举类型是整数类型。每个枚举定义了个新的类型
使用 enum 创建枚举——注意 Swift 的枚举可以关联方法
enum Rank:Int{
case Ace = 1
case Two,Three,Four,Five,Six,Seven,Eight,Nine,Ten
case Jack,Queen,King
func simpleDescripetion() -> String{
switch self {
case .Ace:
return "ace"
case .Jack:
return "jack"
case .Queen:
return "queen"
case .King:
return "king"
default:
return "not find"
}
}
}
关于switch语句,必须是完备的。如上所示,如果没有把所有case写完整,那么就需要加上default语句。如上代码,会进入default语句。如果所有case都写完整了,那么可以不需要default语句。另外,不同与c语言等,swift语言的switch语句的case会自动break。
关联枚举类型
注意 Swift 的枚举可以关联方法:
enum OtherType{
case Point(Int, Int)
case Name(String)
}
var type:OtherType = .Name("xd")
type = .Point(4, 9)
switch type{
case .Point(let iX, let iY):
println("point X:\(iX) Y: \(iY)")
case .Name(let strName):
println("name:\(strName)")
}
初始值设定。初始值类型必须要一致
enum InitalSettingType:Character{
case CharacterX = "a"
case CharacterY = "r"
}
enum InitalIntType:Int{
case Monday = 1, Tuesday, Wednesday, Thursday, Friday, Saturday, weekday
}//Int类型枚举初始值会自动+1.类似c语言枚举
如果要访问枚举类型的初始值,使用rawValue方法。
let initValue = InitalIntType.Tuesday.rawValue
println("\(initValue)")
使用init(rawValue:)反向查找枚举类型值。
let emueValue = InitalIntType.init(rawValue:4)
**
结构
**
Swift 使用 struct 关键字创建结构。结构支持构造器和方法这些类的特性。 结构和类的最大区别在于:结构的实例按值传递(passed by value), 而类的实例按引用传递(passed by reference)
struct Card {
var rank:Rank
func simpleDescripetion() -> String{
return "the \(rank.simpleDescripetion()) "
}
}
let threeOfSpades = Card(rank: .Three)
let threeOfSpadesDescription = threeOfSpades.simpleDescripetion()