Swift枚举定义与语法教程
Swift 的枚举功能,真的是写代码时候的宝藏工具。想表达一组固定的值?用枚举就对了。Swift 里的枚举不光能列出几个 case,还能塞进去额外的数据,比如圆的半径、正方形的边长之类的。嗯,是不是比你想的强大多了?
枚举的语法也挺直观的,用enum
加上case
就能定义。比如定义颜色:
enum Color {
case red
case green
case blue
}
是不是像你在 JavaScript 里写对象?
还有更高级的玩法,比如关联值。你可以这样写一个图形枚举:
enum Shape {
case circle(radius: Double)
case square(sideLength: Double)
}
嗯,看起来就清爽。你再加个area()
方法,计算图形面积也方便:
extension Shape {
func area() -> Double {
switch self {
case .circle(let radius):
return Double.pi * radius * radius
case .square(let sideLength):
return sideLength * sideLength
}
}
}
,你要是想让枚举和其他类型玩得更溜,还可以加上原始值:
enum ZodiacSign: String {
case aries = "白羊座"
case taurus = "金牛座"
}
直接拿.rawValue
就能读出对应的字符串,挺方便的。
还有一个小技巧:在switch
里配合let
,解构关联值超好用。比如:
let myShape = Shape.square(sideLength: 5)
switch myShape {
case .circle(let radius):
print("这是一个半径为\(radius)的圆")
case .square(let sideLength):
print("这是一个边长为\(sideLength)的正方形")
}
,如果你在乎枚举值的比较,还可以让它们实现Equatable
协议:
extension Shape: Equatable {
static func ==(lhs: Shape, rhs: Shape) -> Bool {
switch (lhs, rhs) {
case (.circle(let l), .circle(let r)): return l == r
case (.square(let l), .square(let r)): return l == r
default: return false
}
}
}
,Swift 的枚举功能,真的是灵活又实用。用好了,不光代码清晰,逻辑也更健壮。如果你正想提升 Swift 基础,这个教程蛮值得一看。如果你对其他语言的枚举也感兴趣,可以看看Delphi 枚举数据类型特性或者C 语言里的枚举类型,做个对比会更有感觉。
31.76MB
文件大小:
评论区