08:swift-枚举

 

 

正文

/*
 1: **  Swift中的枚举则更加灵活,每一个枚举成员可以是字符串、字符、任意的整数值,或者是浮点类型。
 
 2: * 一旦变量声明成枚举类型,你就可以用一个点语法 来访问枚举的值。
 
 3: Swift 中的枚举是具有自己权限的一类类型。它们使用了许多一般只被类所支持的特性,例如计算属性用来提供关于枚举当前值的额外信息,并且实例方法用来提供与枚举表示的值相关的功能。枚举同样也能够定义初始化器来初始化成员值;而且能够遵循协议来提供标准功能。

 4: *遍历枚举情况(case) .allCases
 
 5: *** 关联值
 
 6: 原始值
 
 7: *** 隐式指定的原始值
    7.1: 当整数值被用于作为原始值时,每成员的隐式值都比前一个大一。
        如果第一个成员没有值,那么它的值是 0 。
 
    7.2: 当字符串被用于原始值,那么每一个成员的隐式原始值则是那个成员的名称。
        
    7.3: 你可以用 rawValue属性来访问一个枚举成员的原始值:
        let sunsetDirection = CompassPoint.west.rawValue
 
    7.4: 初始化枚举

 
 8: ** 递归枚举
 */

enum CompassPoint: String, CaseIterable {
    case north
    case south
    case east
    case west
}

import UIKit


class EightEnumVC: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        self.view.backgroundColor = .white
        self.title = "8:枚举"
        testEnumCase()
        forAllCase()
        visitRawValue()
        initEnumCase()
    }
    

    // 1: 枚举的定义
    private func testEnumCase() {
        print("枚举的定义")
        let direction: CompassPoint = .east
        switch direction {
        case .north:
            print(direction, direction.self)
        case .south:
            print(direction, direction.self)
        case .east:
            print(direction, direction.self)
        case .west:
            print(direction, direction.self)
        }
    }

    // 2:枚举的遍历 CaseIterable ,使用.allCase 需要实现CaseIterable协议
    private func forAllCase() {
        print("枚举的遍历")
        for direction in CompassPoint.allCases {
            print(direction)
        }
    }
    
    // 3: 访问原始值
    private func visitRawValue() {
        print("访问原始值:" + CompassPoint.east.rawValue)
    }
    
    // 4: 初始化一个枚举变量
    private func initEnumCase() {
        let eastCase = CompassPoint(rawValue: "east")
        if let east = eastCase {
            print("初始化成功:\(east)")
        } else {
            print("初始化失败")
        }
    }
}

 

posted on 2023-03-04 17:13  风zk  阅读(32)  评论(0编辑  收藏  举报

导航