swift版的枚举变量

简介:

swift版的枚举变量

 swift的枚举类型跟普通的类是极为类似的,使用的时候,请不要以为他是一个常量,以下是测试用源码



//
//  ViewController.swift
//  SwiftEnum
//
//  Created by YouXianMing on 15/10/9.
//  Copyright © 2015年 ZiPeiYi. All rights reserved.
//

import UIKit

enum Planet: Int {
    
    case Mercury = 1, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune
}

enum CompassPoint: String {
    
    case North, South, East, West
}

enum Barcode {
    
    case UPCA(Int, Int, Int, Int)
    case QRCode(String)
}

enum MinionIndex: Int {
    
    case DAVE, BOB, JERRY, JORGE, KEVIN, MARK, PHIL, STUART, TIM
    
    static let minionNames = [
        
        DAVE   : "Dave",
        BOB    : "Bob",
        JERRY  : "Jerry",
        JORGE  : "Jorge",
        KEVIN  : "Kevin",
        MARK   : "Mark",
        PHIL   : "Phil",
        STUART : "Stuart",
        TIM    : "Tim"]
    
    func minionName() -> String {
        
        if let minionName = MinionIndex.minionNames[self] {
            
            return minionName
            
        } else {
            
            return "Minion"
        }
    }
    
    func minionImage() -> UIImage? {
        
        return UIImage(named: "Minion\(minionName())")
    }
}

class ViewController: UIViewController {
    
    override func viewDidLoad() {
        
        super.viewDidLoad()
        
        normalExample()
        
        planetExample()
        
        compassPointExample()
        
        barcodeExample()
        
        minionIndexExample()
    }
    
    func normalExample() {
    
        let vegetable = "red pepper"
        
        switch vegetable {
            
        case "celery":
            print("Add some raisins and make ants on a log.")
            
        case "cucumber", "watercress":
            print("That would make a good tea sandwich.")
            
        case let x where x.hasSuffix("pepper"):
            print("Is it a spicy \(x)?")
            
        default:
            print("Everything tastes good in soup.")
        }
    }
    
    func planetExample() {
        
        if let planet : Planet = Planet(rawValue: 1) {
            
            // switch 操作
            switch planet {
                
            case .Mercury:
                print("\(planet) \(planet.rawValue)")
                
            case .Earth:
                print("\(planet) \(planet.rawValue)")
                
            case .Neptune:
                print("\(planet) \(planet.rawValue)")
                
            default:
                print("\(planet) \(planet.rawValue)")
            }
            
        } else {
            
            // 没有这个枚举值
            print("no value")
        }
    }
    
    func compassPointExample() {
        
        if let compassPoint : CompassPoint = CompassPoint(rawValue: "Kxo") {
            
            // switch 操作
            switch compassPoint {
                
            case .North:
                print("\(compassPoint) \(compassPoint.rawValue)")
                
            case .West:
                print("\(compassPoint) \(compassPoint.rawValue)")
                
            default:
                print("\(compassPoint) \(compassPoint.rawValue)")
            }
            
        } else {
            
            // 没有这个枚举值
            print("no value")
        }
    }
    
    func barcodeExample() {
    
        let barCode = Barcode.UPCA(20, 120, 10, 20)
        
        switch barCode {
            
        case .UPCA(20, 120, 10, 20):
            print("YES")
            
        default:
            print("NO")
        }
    }
    
    func minionIndexExample() {
    
        print(MinionIndex.DAVE.minionImage())
    }
}

rawValue类型的枚举类型

 

可以带参数,可以带方法

 

非 rawValue 类型


目录
相关文章
|
6月前
|
编译器 Swift
在Swift编程语言中,定义变量
在Swift编程语言中,定义变量
72 1
|
6月前
|
存储 Swift
在Swift编程语言中,变量(Variable)和常量(Constant)
在Swift编程语言中,变量(Variable)和常量(Constant)
102 1
|
24天前
|
存储 大数据 编译器
Swift 变量
10月更文挑战第24天
18 2
|
20天前
|
Swift iOS开发
Swift 枚举
10月更文挑战第28天
25 0
|
6月前
|
存储 编译器 Swift
【Swift开发专栏】Swift中的变量与常量
【4月更文挑战第30天】本文介绍了Swift编程中的变量与常量,它们是存储数据的基础。变量(`var`)值可变,常量(`let`)值不变。变量和常量命名遵循驼峰命名法。第二部分讨论了它们的使用场景,变量用于需变化的值,如游戏得分;常量用于固定值,如圆周率π。第三部分比较了两者在可变性、声明方式、内存管理、代码可读性与安全性和类型推断方面的差异。理解并恰当使用变量与常量对编写高质量Swift代码至关重要。
46 1
|
6月前
|
存储 定位技术 Swift
【Swift 开发专栏】Swift 中的枚举与结构体
【4月更文挑战第30天】本文探讨了Swift中的枚举与结构体,包括它们的定义、用法及差异。枚举用于表示有限状态或选项,如游戏状态;结构体适合表示具有特定属性和行为的数据,如商品信息。两者均可定义属性和方法,作为函数参数。枚举以整数存储,不可继承,结构体按属性存储且可继承,更灵活。理解两者特点有助于提升编程效率。
38 0
|
6月前
|
存储 Swift 容器
在Swift编程语言中,变量和常量
在Swift编程语言中,变量和常量
50 2
|
6月前
|
Swift
Swift 中的枚举(Enum)
Swift 中的枚举(Enum)
51 2
|
6月前
|
存储 安全 编译器
swift变量和常量
swift变量和常量
56 1
|
Swift
6 Swift 变量和常量的定义
Swift 变量和常量的定义
61 0