Swift--- 枚举和结构体
使用枚举创建枚举。与类和所有其他命名类型一样,枚举可以具有与它们相关联的方法。
enum Rank: Int {
case ace = 1
case two, three, four, five, six, seven, eight, nine, ten
case jack, queen, king
func simpleDescription() -> String {
switch self {
case .ace:
return "ace"
case .jack:
return "jack"
case .queen:
return "queen"
case .king:
return "king"
default:
return String(self.rawValue)
}
}
}
let ace = Rank.ace
let aceRawValue = ace.rawValue
默认情况下,Swift分配的原始值从0开始,每次递增1个,但是您可以通过显式地指定值来改变这种行为。在上面的示例中,Ace被显式地赋予了一个原始值1,其余的原始值按顺序分配。还可以使用字符串或浮点数作为枚举的原始类型。使用rawValue属性访问枚举案例的原始值。
使用init?(rawValue:)初始化器从原始值生成枚举的实例。它返回匹配原始值的枚举用例,如果没有匹配秩,则返回nil。
使用struct创建一个结构。结构支持许多与类相同的行为,包括方法和初始化器。结构和类之间最重要的区别之一是,结构总是在代码中传递时被复制,但是类是通过引用传递的。
struct Card {
var rank: Rank
var suit: Suit
func simpleDescription() -> String {
return "The \(rank.simpleDescription()) of \(suit.simpleDescription())"
}
}
let threeOfSpades = Card(rank: .three, suit: .spades)
let threeOfSpadesDescription = threeOfSpades.simpleDescription()