首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Swift入门:枚举

枚举(Enumerations)通常称为“ enum”,发音为“ ee-num”,是一种在Swift中定义自己方法。在某些编程语言中,它们只是简单小事,但是Swift给它们增加了巨大功能。...如果我们将其设为枚举,则意味着Swift将仅接受这五个值-其他任何情况都会触发错误。在幕后,枚举通常只是简单数字,比计算机使用字符串要快得多。...枚举在switch / case块内特别有用,特别是因为Swift知道您枚举可以拥有的所有值,因此可以确保覆盖所有这些值。...带有附加值枚举 (关联值枚举Swift最强大功能之一是枚举可以具有您定义附加值。为了进一步扩展这个越来越令人怀疑示例,我将为.wind案例添加一个值,以便我们可以说风速有多快。...提示:Swift可选参数实际上是使用关联值枚举实现。有两种情况:none和some,some具有可选值内值。

76120
您找到你想要的搜索结果了吗?
是的
没有找到

Swift基础 枚举

Swift基础 - 枚举 翻译自:https://docs.swift.org/swift-book/LanguageGuide/Enumerations.html 枚举为一组相关值定义了通用类型,并使您能够在代码中以类型安全方式处理这些值...如果您熟悉C,您将知道C枚举为一组整数值分配相关名称。Swift枚举要灵活得多,不必为每个枚举案例提供值。...Swift枚举本身就是一流类型。它们采用了许多传统上仅由类支持功能,例如计算属性以提供有关枚举当前值更多信息,以及实例方法,以提供与枚举所代表值相关功能。...您通过在枚举名称后写入:CaseIterable来启用此功能。Swift将所有案例集合公开为枚举类型allCases属性。...因为数据是嵌套,所以用于存储数据枚举也需要支持嵌套——这意味着 1. let five = ArithmeticExpression.number(5) 2. let four = ArithmeticExpression.number

5500

Swift基础 嵌套

翻译自:https://docs.swift.org/swift-book/LanguageGuide/Closures.html#ID102 嵌套是自包含功能块,可以在代码中传递和使用。...Swift为您处理捕获所有内存管理。 注意 如果您不熟悉捕获概念,请不要担心。下文在《捕捉价值观》中对此进行了详细解释。 函数中引入全局和嵌套函数实际上是闭包特殊情况。...嵌套表达式语法 嵌套表达式语法具有以下一般形式: { (parameters) -> return type in statements } 嵌套表达式语法中参数可以是输入输出参数,但它们不能有默认值...然后,闭包可以从其主体内引用和修改这些常量和变量值,即使定义常量和变量原始范围不再存在。 在Swift中,可以捕获值最简单闭包形式是写在另一个函数主体中嵌套函数。...然而,当self是结构或枚举实例时,转义闭包无法捕获对self可变引用。结构和枚举不允许共享可变性,正如结构和枚举是值类型中讨论那样。

9900

swift 枚举(枚举关联值、枚举原始值、递归枚举等)

Swift枚举在创建时未分配默认整数值。...count) //4 for season in Season.allCases { print(season) } //spring //summer //autumn //winter 关联值 Swift...枚举可以用来存储任意类型关联值 声明存储不同类型关联值枚举成员(这个定义不提供任何Int或String类型关联值) 一个成员值是(Int,Int,Int)类型关联值num 一个成员值是(String...原始值是在定义枚举时被预先填充值。对于一个特定枚举成员,它原始值始终不变。关联值是创建一个基于枚举成员常量或变量时才设置值,枚举成员关联值可以变化。...autumn case winter } 当使用字符串作为枚举类型原始值时,每个枚举成员隐式原始值为该枚举成员名称 enum Season:String { case spring

20410

Swift系列四 - 枚举

:public typealias Void = () 二、枚举 Swift枚举和C/OC语言不一样,以前写OC时候枚举本质是int类型,但Swift枚举可以是多类型。...关联值 有时将枚举成员值跟其他类型值关联存储在一起,会非常有用....递归枚举 关键字:indirect; 可以把需要递归枚举成员前面加indirect,也可以为了方便直接加到枚举定义前面。...在Swift中查看内存占用大小及对齐方式使用枚举:MemoryLayout: size:实际用到空间大小 stride:分配占用空间大小 alignment:内存对齐方式 下面的意思是,Int在内存中占用...结论一: 把传进去关联值直接存储到枚举变量内存里面的,所以枚举变量是关联值的话,内存是一定和将要存储关联值大小有关。

47210

Swift3.0 - 枚举

} b.单行写法 enum CompassPoint { case north,south,ease,west } 提示: Swift 3.0 开始,定义枚举值,统一小写 指定枚举类型原始数据类型...enum Rank: Int{ // Int 设置枚举类型 // 定义枚举值设置值 case ace // 可以case 后面一次定义多个枚举值 case two, three, four, five...= Rank(rawValue: 1) 提示 第二种创建枚举为可选类型,这样设计原因是,你有可能创建一个nil对象,处于安全考虑它也必须是可选值,使用时候要解包 给枚举设置原始值 enum...答案是否定,因为系统不知道你枚举原始值是什么类型,这里系统没有进行类型推断,所有我们要给枚举添加原始值之前,必须指定枚举原始值类型,如下 enum CompassPoint:Character...重新实现SWIFT标准库可选类型(使用泛型技术) enum OptionalValue { case none case some(Wrapped) } var possibleInteger

41020

Swift基础 嵌套类型

Swift基础 - 嵌套类型 翻译自:https://docs.swift.org/swift-book/LanguageGuide/NestedTypes.html 创建枚举通常是为了支持特定类或结构功能...同样,可以方便地定义纯属实用程序类和结构,以便在更复杂类型上下文中使用。为了做到这一点,Swift使您能够定义嵌套类型,从而在它们支持类型定义中嵌套支持枚举、类和结构。...要将类型嵌套在另一种类型中,请在它支持类型外部大括号中写入其定义。类型可以嵌套到所需任意级别。...嵌套类型在行动 下面的示例定义了一个名为BlackjackCard结构,该结构模拟了二十一点游戏中使用扑克牌。BlackjackCard结构包含两种嵌套枚举类型,称为Suit和Rank。...如上所述,Rank枚举定义了自己进一步嵌套结构,称为Values。这种结构概括了一个事实,即大多数卡片只有一个值,但Ace卡有两个值。

7500

Swift代码中嵌套命名法

Swift代码中嵌套命名法 Swift支持与其他类型嵌套命名,尽管它还没有专用命名关键词。下面我们来看看,如何使用类型嵌套来优化我们代码结构。...大多数Swift开发者习惯于用类型在结构上实际名字累命名。例如:PostTextFormatterOption(一个Text Formatter类型用于format PostsOption)。...这可能是因为我们在Objective-C & C中,养成别无选择可怕命名习惯,被我们带到了Swift里。...我比较喜欢把父类型内容放在上面————同时还可以享受嵌套类型便利。 事实上,在Swift中还有好几种其他方法可以实现命名、嵌套类型。...使用extension实现嵌套类型 另一个实现嵌套类型选择就是extension。这种方法可以在实现和调用时保持层级关系,同时清楚明白分开每种类型。

1.7K31

窥探Swift之别样枚举类型

Fundation框架和UIKit中枚举更是数不胜数,枚举可以使你代码更易阅读并且可以提高可维护性。在Swift语言中枚举可谓是让人眼前一亮。...在Swift枚举不仅保留了大部分编程语言中枚举特性,同时还添加了一些好用而且实用新特性,在本篇博客中将领略一些Swift枚举类型魅力。   有小伙伴会问,不就是枚举么,有什么好说。...在Swift枚举怎不然,Swift枚举功能要强大多,不仅可以给枚举元素绑定值,而且可以给枚举元素关联多个值,同时还可以通过元素值给一个枚举变量赋一个枚举值,并且枚举中可以定义枚举函数。...下面将要开始窥探一下Swift枚举。   ...  七、枚举函数     在Swift枚举是可以添加函数,有没有眼前一亮呢。

96570

Swift讲解专题九——枚举

Swift讲解专题九——枚举 一、引言         在Objective-C语言中,没有实际上是整型数据,Swift枚举则更加灵活,开发者可以不为其分配值类型把枚举作为独立类型来使用,也可以为其分配值...二、枚举语法         Swift中enum关键字来进行枚举创建,使用case来创建每一个枚举值,示例如下: //创建姓氏枚举,和Objective-C不同,Swift枚举不会默认分配值 enum...        Swift枚举有一个很有意思特点,其可以设置一些相关值,通过相关值,开发者可以从公用枚举值中获取到传递额外相关值,示例如下: enum Number { case one...有了相关值这样句法,大大增加了枚举灵活性,例如一个形状枚举,可能枚举值有矩形,圆形等,矩形枚举值就可以提供宽高相关值,圆形枚举值就可以提供半径相关值,是开发更加灵活。...四、递归枚举         递归枚举Swift枚举中一个难于理解地方,实际上也并非十分难于理解,开发者只要明白枚举实质,递归枚举就很好理解。

42020

15.Swift学习之枚举

枚举介绍 概念介绍 枚举定义了一个通用类型一组相关值,可以在代码中以一个安全方式来使用这些值 Swift枚举是一等类型, 它可以像类和结构体一样增加属性和方法 在 C/OC 语言中枚举指定相关名称为一组整型值...,而Swift枚举更加灵活,不必给每一个枚举成员提供一个值,Swift枚举可以提供值类型有:字符串,字符,整型值,浮点值等 Swift枚举可以包含方法 枚举类型语法 使用enum...定义方式一 case关键词表明新一行成员值将被定义 不像 C 和 Objective-C 一样,Swift 枚举成员在被创建时不会被赋予一个默认整数值 下面的例子中,North,South,...枚举类型赋值可以是字符串/字符/整型/浮点型 如果有给枚举类型赋值,则必须在枚举类型后面明确说明具体类型 enum CompassPoint : Int { case North = 1...C/OC中枚举本质就是整数,所以C/OC中枚举是有原始值,默认是从0开始,而Swift枚举默认是没有原始值, 但是可以在定义时告诉系统让枚举有原始值 注意: 原始值区分大小写 返回是一个可选值

52930

swift学习笔记】五.使用枚举优雅管理Segue

在做页面转跳时候,我们要给Segue命名,如果Segue多了,管理他们就是一个恶梦。我们可以枚举更优雅管理这些Segue。   ...protocol必须为UIViewControl,SegueIdentifier原值要为String类型 这个扩展有两个方法一个是用要实现别名来调用执行Segue方法performSegueWithIdentifier...再用一个枚举来实现SegueIdentifier并且为String,里面有两个case这两个就要我们要打开新窗体名称。...下边有两个按钮Action是用SegueIdentifier枚举来打开相应窗体。...这两个Segue分别命名为我们枚举类型两个值:“ShowView1”  “ShowView2”。再来两个Button连接后台两个窗体Action ? 源代码:segueTypeDemo.zip

64950

苹果新编程语言 Swift 语言进阶(七)--枚举、结构、类

Swift语言中,具有类特征类型包含三种,即枚举类型、结构类型(包含基本类型,基本类型实际都是结构类型特例)、类。当中枚举类型、结构类型是属于值类型,类属于引用类型。...一、 枚举 枚举定义了一种包括一组相关值公共类型。枚举Swift一种与类类似的类型,具有很多传统类才有的特征,比如计算属性、实例方法,可以通过扩展或协议增强功能等。...与C和Objective-C语言枚举类型不同是:在Swift中不须要为枚举成员分配一个默认整数值。...Swift中可以为每个枚举成员规定一个随意类型相关值,而且为每个枚举成员规定相关值类型可以不同。...与C语言为枚举成员指定值类似,Swift要求为枚举每一个枚举成员分配原始值必须在枚举声明内唯一。

99520

swift 函数(函数定义、函数调用、函数类型、嵌套函数)

Int型值” func sayHI(){ print("sayHI") } 这个函数类型是() -> void,可以理解为“这个函数类型没有参数,返回Void类型函数” 函数类型使用...它不关心传入函数是如何实现,只关心传入函数是不是一个正确类型。这使得 showResult(_:_:_:) 能以一种类型安全(type-safe)方式将一部分功能转给调用者实现。...之后在定义一个showResult(:) 函数,它返回类型是(String) -> String 类型函数。...sayHI : sayHello } let show = showResult(true) print(show("world")) //HI world 嵌套函数 把函数定义在别的函数体中...,称作嵌套函数 func showResult(_ backward: Bool) -> (String) -> String { func sayHI(_ name:String) -> String

12610

sql嵌套查询_嵌套查询和嵌套结果区别

大家好,又见面了,我是你们朋友全栈君。 SQL连接查询和嵌套查询详解 连接查询 若一个查询同时涉及两个或两个以上表,则称之为连接查询。...连接查询是数据库中最最要查询, 包括 1、等值与非等值连接查询 2、自然连接查询 3.自身连接查询 4、外连接查询: 4.1、左外连接 4.2、右外连接 5、多表连接查询 6、嵌套查询 1、等值连接查询..., Course, Study WHERE Student = Study.Sno AND Study.cno = Course.Cno ADN Course.Cno = C601    6、嵌套查询...嵌套查询又称子查询,是指在父查询where条件语句中再插入一个子查询语句,连接查询都可以用子查询完成,反之不然。...一层层嵌套,由已知得到未知。

3.8K40
领券