美文网首页
Swift-8(枚举)

Swift-8(枚举)

作者: 雨亦有种执着 | 来源:发表于2020-07-15 17:44 被阅读0次

每日一句:

精彩的人生总有精彩的理由,笑到最后的才会笑得最甜!

微笑.jpg

一、定义

  • 枚举为一组相关的值定义了一个共同的类型,使你可以在你的代码中以类型安全的方式来使用这些值。
  • 在swift中枚举是一等类型
  • 枚举使用enum
  • 与OC不同的是,swift的枚举创建的时候,不会被默认赋予整数型

二、格式

enum 枚举名称 {
//定义
}
事例:

//创建一个枚举
enum frameRect {
    case x
    case y
    case width
    case height
}
//多个枚举可以写成一行,用逗号隔开
enum frameRectTwo {
    case x,y,width,height
}
var size = frameRect.x
//在swift中可以自动推断其类型
size = .width
//枚举可以使用swicth语句来匹配
switch size {
case .x:
    print("X")
case .y:
    print("Y")
case .width:
    print("width")
case .height:
    print("height")
}

三、枚举的遍历

  • 有些情况,你需要得到包含枚举成员的集合,这是需要枚举遵循CaseIterable协议
    事例:
// TODO: 得到枚举内成员的集合
enum name:CaseIterable {
    case jone,king,bob
}
let names = name.allCases
print(names.first!)

四、关联值

  • Swift 枚举来存储任意类型的关联值
    事例:
// TODO: 关联值
enum person {
    case name(String,String)
    case size(Int,Float,Float)
}
var king = person.name("king", "K")
king = .size(18, 190, 110)
print(king)

五、递归枚举

  • 递归枚举是一种枚举类型,它有一个或多个枚举成员使用该枚举类型的实例作为关联值
  • 枚举成员前加上 indirect 来表示该成员可递归
  • 枚举前加上 indirect 来表示该枚举所有成员可递归
    事例:
// TODO: 递归枚举 indirect
enum caluNum {
    case num(Int)
    indirect case addNum(caluNum,caluNum)
    indirect case reduceNum(caluNum,caluNum)
}
//所有枚举成员可递归
indirect enum caluAllNum {
    case num(Int)
    case addNum(caluNum,caluNum)
    case reduceNum(caluNum,caluNum)
}
let one = caluNum.num(1)
let two = caluNum.num(2)
let sum = caluNum.addNum(one, two)
let reduce = caluNum.reduceNum(two, caluNum.num(1))
func pritCaluNum(_ printNum:caluNum) -> Int {
    switch sum {
    case let .num(value):
        return value
    case let .addNum(left, right):
        return pritCaluNum(left) + pritCaluNum(right)
    case let .reduceNum(leftNum, rightNum):
        return pritCaluNum(leftNum) - pritCaluNum(rightNum)
    }
}
print(pritCaluNum(reduce))

gitHub地址:(https://github.com/kingbroad/SwiftStudy)(欢迎👏关注❤️)

相关文章

  • Swift-8(枚举)

    每日一句: 精彩的人生总有精彩的理由,笑到最后的才会笑得最甜! 一、定义 枚举为一组相关的值定义了一个共同的类型,...

  • C#枚举及与枚举常数的转换

    1、枚举的定义 2、枚举绑定到comboBox 3、枚举常数转换为枚举string转枚举 数字值转枚举

  • Swift 基础笔记 - 枚举

    枚举 OC定义和使用枚举 Swift定义枚举类型 Swift判断枚举类型 枚举成员类型

  • 枚举类

    1.枚举类型的定义: 枚举类型定义的一般形式为 enum 枚举名{//枚举值表枚举值1;枚举值2;...} 在枚举...

  • 10、枚举与闭包

    枚举 枚举和普通类相比有什么优势 枚举类型、枚举名称与枚举值 枚举的比较运算 两个枚举之间可以使用等值比较(==)...

  • Swift与OC的语法简单对比(常用语法二)

    20- 枚举,枚举原始值,枚举相关值,switch提取枚举关联值 Swift枚举: Swift中的枚举比OC中的枚...

  • Swift 2 学习笔记 10.枚举

    课程来自慕课网liuyubobobo老师 枚举 枚举基础 枚举之原始值 枚举之关联值 枚举递归

  • swift3语法(八)

    枚举/结构体 枚举 定义形式enum 枚举名 { 枚举值} // 例如enum CompassPoint {...

  • C语言基础 之 枚举类型

    枚举类型 枚举类型: 列出所有可能的值 枚举类型的定义 枚举类型定义的一般格式:enum 枚举类型名 {枚举值表}...

  • 枚举

    枚举 Why:为什么需要枚举 What:枚举是什么; How:枚举怎么实现 When:枚举什么时候使用 Where...

网友评论

      本文标题:Swift-8(枚举)

      本文链接:https://www.haomeiwen.com/subject/exyjhktx.html