Swift 枚举的用法

//
//  Enumerations.swift
//  SwiftCode
//
//  Created by Alisa on 2021/9/26.
//  Copyright © 2021 Alisa. All rights reserved.
//

import Foundation

//枚举的用法
/*
    枚举为一组相关值定义了一个通用类型,从而可以让你在代码中类型安全的操作这些值。
    swift中的枚举用法:
        不需要枚举中的每个成员都提供值,如果一个值要被提供给每一个枚举成员,那么这个值可以是字符串、字符、任意的整数值、或者浮点类型。
        枚举的成员可以指定任意类型的值来与不同的成员值关联储存,这更像是其它语言中的union或variant的效果。
        你可以定义一组相关成员的合集作为枚举的一部分,每一个成员都可以有不同类型的值的合集与其关联。
 */

//SurnameOne、SurnameTwo两种写法是一样的
enum SurnameOne{
    case 张
    case 王
    case 李
    case 赵
}

enum SurnameTwo{
    case 张,王,李,赵
}

//在创建枚举时,可以设置枚举值的类型
enum ValueSender : Int {
    case one = 1    //第一个枚举值的原始值为1
    case two        //默认原始值为2
    case three      //默认原始值为3
    case four       //默认原始值为4
}

//创建一个有关联值的枚举
enum Shape{
    case circle(center:(Double, Double), radius:Double)
    case rect(center:(Double, Double), width:Double, height:Double)
    case triangle(point1:(Double, Double), point2:(Double, Double), point3:(Double, Double))
}

class Enumerations : NSObject
{
    //枚举的初始化
    func emumerationsInit(){
        
        var sur : SurnameOne   //创建一个姓氏枚举类型的变量
        sur = SurnameOne.赵;     //对sur变量进行赋值
        sur = .李                //当前变量sur已经确认为某个枚举类型,对sur进行赋值时可以使用这种省略的方式
        print("sur val:\(sur)")
    }
    
    //枚举与switch联用
    func emumerationsAndSwitch(){
        
        let vs = ValueSender.three;
        //在开发中,枚举类型经常和switch-case结合使用以实现选择结构
        switch vs {
        case .one:
            print("vs val:one")
        case .two:
            print("vs val:two")
        case .three:
            print("vs val:three")
        case .four:
            print("vs val:four")
        }
    }
    
    //枚举的相关值
    func correlationValue(){
        
        let shape1 = Shape.circle(center:(2.2, 3.4), radius: 1.5)
        let shape2 = Shape.rect(center:(1.2, 3.2), width: 5.0, height: 6.0)
        let shape3 = Shape.triangle(point1:(2.3, 2.4), point2:(2.3, 2.4), point3: (2.3, 2.4))
        
        let arrayOne = [shape1, shape2, shape3]
        
        for item in arrayOne {
            
            switch item {
            case .circle(let center, let radius):
                print("this is circle, center:\(center), radius:\(radius)")
            case .rect(let center, let width, let height):
                print("this is rec, center:\(center), width:\(width), height:\(height)")
            case .triangle(let point1, let point2, let point3):
                print("this is rect, point1:\(point1), point2:\(point2), point3:\(point3)")
            }
        }
        
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值