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

在Swift 4.2中,是否可以使用特定类型的rawValue为枚举编写默认扩展?

在Swift 4.2中,是可以使用特定类型的rawValue为枚举编写默认扩展的。

枚举是一种定义一组相关值的数据类型。在Swift中,枚举可以有关联的原始值(raw value),这些原始值可以是整数、浮点数、字符串或者布尔值。在使用枚举时,我们可以通过rawValue属性来访问枚举的原始值。

在Swift 4.2中,我们可以为枚举编写默认扩展,以便在创建枚举实例时使用特定类型的rawValue。默认扩展是指为一个类型添加额外的功能,而不需要修改该类型的定义。

下面是一个示例,展示了如何在Swift 4.2中使用特定类型的rawValue为枚举编写默认扩展:

代码语言:txt
复制
enum Direction: String {
    case north = "N"
    case south = "S"
    case east = "E"
    case west = "W"
}

extension Direction {
    init?(rawValue: Int) {
        switch rawValue {
        case 0:
            self = .north
        case 1:
            self = .south
        case 2:
            self = .east
        case 3:
            self = .west
        default:
            return nil
        }
    }
}

let direction = Direction(rawValue: 2) // 输出: Optional(Direction.east)

在上面的示例中,我们定义了一个枚举Direction,它的原始值类型是String。然后,我们为Direction编写了一个默认扩展,使其可以通过Int类型的rawValue来创建枚举实例。在默认扩展中,我们使用了一个switch语句来根据rawValue的值来初始化枚举实例。

通过这种方式,我们可以根据特定类型的rawValue来创建枚举实例,使得代码更加灵活和易于维护。

推荐的腾讯云相关产品:腾讯云云服务器(CVM)和腾讯云对象存储(COS)。

腾讯云云服务器(CVM)是一种可扩展的计算服务,提供了弹性的虚拟服务器,可以满足不同规模和需求的应用程序。您可以根据实际需求选择不同配置的云服务器,并且可以根据业务需求随时调整配置。

腾讯云对象存储(COS)是一种安全、高可靠、低成本的云存储服务,适用于存储和处理各种类型的数据。它提供了简单易用的API接口和丰富的功能,可以满足不同场景下的存储需求。

您可以通过以下链接了解更多关于腾讯云云服务器(CVM)和腾讯云对象存储(COS)的信息:

腾讯云云服务器(CVM):https://cloud.tencent.com/product/cvm

腾讯云对象存储(COS):https://cloud.tencent.com/product/cos

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Swift基础 枚举

枚举可以定义初始化器以提供初始大小写值;可以扩展其功能,使其功能超出原始实现;并且可以遵守协议以提供标准功能。 有关这些功能更多信息,请参阅属性、方法、初始化、扩展和协议。...您可以使用case关键字来引入新枚举案例。 注意 与C和Objective-C等语言不同,Swift枚举案例默认没有设置整数值。...您通过枚举名称后写入:CaseIterable来启用此功能。Swift将所有案例集合公开枚举类型allCases属性。...原始值 关联值中条形码示例显示了枚举案例如何声明它们存储不同类型关联值。作为关联值替代品,枚举情况可以预先填充默认值(称为原始值),这些值都是同一类型。...当您首次代码中定义枚举时,原始值设置预填充值,如上面的三个ASCII代码。特定枚举情况原始值始终相同。当您根据枚举一个情况创建新常量或变量时,会设置关联值,并且每次这样做时都可能不同。

6300

Swift 面向对象解析(一)

Swift类、结构体、枚举中都可以定义(属性、方法、下标、构造体、嵌套类型),下面我们一个一个用我小小认识说一下它们,我也会给大家一些我看到很不错博客链接,方便大家更好掌握,理解Swift...Swift枚举和 C,OC 枚举区别: Swift枚举成员不会被分配一个默认整数值,它枚举名本身就是一个枚举实例和整数值之间可没有任何关系。...3 : 如果将存储属性类型申明为可选类型,系统就可以将这些属性初始值设置 nil (大家一定注意,Swiftnil和OCnil完全不一样,Swiftnil是一个确定值,叫缺失值,而OCnil...上面的形参名是Swift隐式它们提供,你可以方法中直接调用,扣上面字眼去理解它们定义和使用; var nameString = ""{ willSet{...使用static 或者 class 修饰方法属于该类型类方法,是可以使用类型本身来调用。class 一般是类里面修饰, static 一般用在结构体和枚举中修饰。

1.7K70

IOS-swift5.1快速入门之旅

如果你用C或Objective-C编写代码,这个语法看起来很熟悉 - Swift中,这行代码是一个完整程序。您无需输入/输出或字符串处理等功能导入单独库。...全局范围编写代码用作程序入口点,因此您不需要main()函数。您也不需要在每个语句末尾写分号。 本导览通过向您展示如何完成各种编程任务,您提供了足够信息来开始Swift编写代码。...您还可以使用字符串或浮点数作为枚举原始类型使用rawValue属性可以访问枚举案例原始值。 使用init?(rawValue:)初始化程序从原始值创建枚举实例。...添加absoluteValue属性类型编写扩展名。...无论函数是否抛出错误,都会执行代码。您可以使用defer彼此相邻编写和清除代码,即使它们需要在不同时间执行。

2K20

窥探Swift之别样枚举类型

{ 3 case Cat, Dog, Cow, Duck, Sheep 4 }   二、枚举类型使用     定义完枚举类型就是为了使用对吧,直接使用枚举类型声明变量即可, Swift中是不需要...typedef来定义枚举类型,我们可以直接使用枚举类型。...举个例子,以上面的枚举类型City例,假如我们只知道一个枚举成员值是“北京”,而不知道“北京”这个值对应枚举成员是"Beijing", Swift中是可以通过“北京”这个值给枚举变量赋一个枚举成员...原因很简单,我们不确定枚举City中成员是否含有“北京”,枚举变量youInCity值是不确定,所以喽是可选类型,下面我们就取出youInCity值,首先判断youInCity是否City.Beijing...= City(rawValue: "京"); // testCitynil println(testCity)   五、枚举值自增     好东西还是要保留Swift枚举值如果是整数的话,

97170

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

Swift枚举创建时未分配默认整数值。...相反,这些值类型是已经明确定义好Season类型 枚举使用 当season类型已知时,再次其赋值可以省略枚举类型名 var season = Season.spring print(season...原始值是定义枚举时被预先填充值。对于一个特定枚举成员,它原始值始终不变。关联值是创建一个基于枚举成员常量或变量时才设置值,枚举成员关联值可以变化。...case summer case autumn case winter } 使用枚举成员rawValue属性可以访问该枚举成员原始值 print(Season.spring.rawValue...) 使用原始值初始化枚举实例 可以通过rawValue初始化一个枚举成员,返回值则是枚举成员或nil 可以通过这个来判断这个新枚举成员是否枚举值中 enum Season:Int { case

22310

Swift教程(八)--枚举

Swift 中,我们都必须对枚举类型每个值,指定确定行为。...关联值(Associated Values) Swift 中,我们还可以定义这样枚举类型,它每一个枚举项都有一个附加信息,来扩充这个枚举信息表示,这又叫做关联值。...这样我们初始化枚举类型时候,我们就可以根据每个枚举关联值类型它指定附加信息了: var rect = Shape.Rectangle(CGRect(x: 1, y: 1, width: 100...原始值(Raw Values) 我们刚刚了解了关联值类型枚举使用Swift 枚举类型还提供了另外一个叫做原始值(Raw Values)实现。...Sunday" } 还是表示星期枚举类型,我们对每个枚举项都定义了一个默认原始值,注意一下我们定义枚举第一行代码,enum WeekDayWithRaw : String 我们枚举定义最后,

58320

Swift基础 嵌套类型

Swift基础 - 嵌套类型 翻译自:https://docs.swift.org/swift-book/LanguageGuide/NestedTypes.html 创建枚举通常是为了支持特定类或结构功能...同样,可以方便地定义纯属实用程序类和结构,以便在更复杂类型上下文中使用。为了做到这一点,Swift使您能够定义嵌套类型,从而在它们支持类型定义中嵌套支持枚举、类和结构。...二十一点中,Ace卡价值1或11。...description属性使用可选绑定来检查是否有第二个值要显示,如果是,则为第二个值插入额外描述细节。...提及嵌套类型 要在其定义上下文之外使用嵌套类型,请在其名称前加上嵌套在其中类型名称: let heartsSymbol = BlackjackCard.Suit.hearts.rawValue //

7800

Swift基础语法简化版(续)

这就是Swift枚举类型推断。 枚举原始值 C/OC中,枚举本质就是整数。所以C/OC枚举是有原始值,并且默认是从0开始。...Swift枚举是没有原始值,但是可以定义时候告诉系统让枚举有原始值。...关于设置Swift枚举原始值,需要注意以下几点: 如果原始值是String类型,则原始值是区分大小写 通过 rawValue 可以获取原始值 通过 rawValue 返回枚举是一个可选型,因为原始值对应枚举值不一定存在...Swift扩展类似于OC中分类。 扩展可以事情: 添加计算属性 定义方法 使现有类型遵循某种协议 Swift中,使用extension关键字来实现扩展。...、枚举使用泛型,协议中是不可以这样使用

1.5K20

Swift学习:构造器(下)

//2.可失败构造器其实是构造失败时创建一个类型自身类型可选类型对象。 } 二、枚举类型可失败构造器 通过枚举类型可失败构造器获取枚举类型特定枚举成员,完成构造任务。...,swift中还可以使用带原始值枚举类型可失败构造器。...(rawValue:),这里名为rawValue参数,其类型枚举类型原始值类型一致, 如果该参数值能够和某个枚举成员原始值匹配,则该构造器会构造相应枚举成员,否则构造失败。...= TestNum2(rawValue: "6") if number == nil{ print("枚举类型构造失败")//此句被打印 }``` 三、构造失败传递 与普通构造器相似,可失败构造器也是可以代理...构造过程中,我们可以使用闭包或全局函数某个存储型属性提供定制默认值。

78170

Swift系列四 - 枚举

:public typealias Void = () 二、枚举 Swift枚举和C/OC语言不一样,以前写OC时候枚举本质是int类型,但Swift枚举可以是多类型。...原始值 枚举成员可以使用相同类型默认值预先关联,这个默认值叫做:原始值。...) // 输出:w print(Direction.down.rawValue) // 输出:s 如果枚举原始值类型是Int、String,Swift会自动分配原始值: enum Direction...递归枚举 关键字:indirect; 可以把需要递归枚举成员前面加indirect,也可以为了方便直接加到枚举定义前面。...Swift中查看内存占用大小及对齐方式使用枚举:MemoryLayout: size:实际用到空间大小 stride:分配占用空间大小 alignment:内存对齐方式 下面的意思是,Int在内存中占用

48310

Swift讲解专题九——枚举

Swift讲解专题九——枚举 一、引言         Objective-C语言中,没有实际上是整型数据,Swift枚举则更加灵活,开发者可以不为其分配值类型枚举作为独立类型使用,也可以为其分配值...二、枚举语法         Swift中enum关键字来进行枚举创建,使用case来创建每一个枚举值,示例如下: //创建姓氏枚举,和Objective-C不同,Swift枚举不会默认分配值 enum...则枚举类型可以省略 myName = .李 var myName2:Surname = .王 同样可以枚举值都写在同一个case中,使用逗号分隔: enum Planet { case Mercury...四、枚举原始值         原始值也可以理解枚举设置一个具体类型,示例如下: enum Char:String { case a = "A" case b = "B"...= Char(rawValue:1) 通过原始值进行枚举对象创建时候,有可能创建失败,例如传入原始值并不存在,这时会返回Optional值nil。

42220

万字长文|Swift语法全面解析|附示例

Swift 内置支持检查 API 可用性,编译器使用 SDK 中可用信息来验证我们代码中使用所有 API 项目指定部署目标上是否可用。...枚举语法,使用 Switch 语句匹配枚举值,枚举成员遍历,关联值,原始值(默认值),递归枚举(indirect) 可以定义 Swift 枚举来存储任意类型关联值,每个枚举成员关联值类型可以各不相同...可以一个类,结构体或是枚举类型定义中,添加一个或多个可失败构造器。其语法 init 关键字后面添加问号(init?)。...Swift 允许定义嵌套类型可以支持类型中定义嵌套枚举、类和结构体。...扩展可以给现有的类型添加新构造器。 扩展可以给现有类型添加新实例方法和类方法。 扩展可以给现有的类型添加新下标。 扩展可以给现有的类,结构体,还有枚举添加新嵌套类型

3.3K21

开关组件对比

这种情况下,做法是启动时候调用服务端接口,返回接口数据中存储对应值,使用时直接获取存储值。...通过Swift protocol定义了ToggleType和TogglesDataStoreType两个协议,并定义两个方法,判断开关是否打开、以及更新开关状态 // TogglesDataStoreType.swift...BuildTargetToggle: ToggleType { // 此处可以注意使用系统关键字之后写法 case debug, `internal`, production } struct...userDefaults.register方法使用,赋默认值 self.userDefaults.register(defaults: [ InternalToggle.isLikeButtonForMomentEnabled.rawValue...) } } 远程开关实现: 定义一个枚举,RemoteToggle继承自String和ToggleType,定义String也是为了使用key,每增加一种类型,只需要在enum添加case。

91911

【学习笔记】SWIFT构造函数

扩展应用翻阅,蛮方便!...另外,代码我用 IBM 提供在线 Swift 代码编写运行交互网站: IBM Swift Sandbox ?...myVariable = "abc" } } let instance = MyClass() 你可以不要定义构造函数,比如变量都已经有默认值没有必要自定义构造函数,那么我们可以使用默认构造函数...rawValue 参数构造函数,仅此一个,注意:这个构造函数还是个可失败构造函数,学过 Java 朋友都知道,构造函数可以抛出异常, Swift可以直接让实例化失败返回 nil ,那就是:...另外要指出是,可以直接定义便利构造器,你只需要访问默认指定构造器就可以了,注意注释部分重复定义错误提示哦: ?

1.2K20

Swift解读专题一——Swift2.2语言预览

三、常量与变量         常量和变量是编程语言中最基础两类数据类型,常量可以理解某个值起一个特定名字,常量通常提供给开发者用于某些只赋值一次但却在程序中多处使用量值。...运算符用来optional类型值设置一个默认值,如果optional值nil,则会使用后面设置默认值来代替。         ...        Swift枚举和C与Objective-C有很大差别,Swift中,枚举也被作为一种数据类型来处理,其中可以添加函数方法。... three     case Fir,Sec,Thr } var em = MyEnum.one.rawValue 如果原始值是Int类型,则默认从0开始依次递增,开发者也可以手动设置每个枚举原始值...des()         Swift枚举可以添加附加值,switch语句中取到对应枚举类型后,可以获取开发者设置附加值进行逻辑处理,示例如下: enum MyEnum { //这个类型天啊及一组附加值

2K20

使用 Swift 提高代码质量

相比Any可以更多利用编译时检查发现类型问题。 Enum关联类型 - 通过给特定枚举指定类型避免使用Any。...线程安全 值类型 - 更多使用类型减少多线程中遇到数据竞争问题 async/await - 提供async函数使我们可以用结构化方式编写并发操作。...使用枚举关联值代替Any 例如使用枚举改造NSAttributedStringAPI,原有APIvalueAny类型无法限制特定类型。...有时候我们会通过给予可选值默认方式来处理。但是这里应考虑什么场景下可以给予默认值。不能给予默认场景应当及时使用return或抛出异常,避免错误值被传递到更多业务流程。...可以使用兜底逻辑场景使用默认值,例如默认文字/文字颜色。

4.6K30

Swift3.0 - 枚举

} b.单行写法 enum CompassPoint { case north,south,ease,west } 提示: Swift 3.0 开始,定义枚举值,统一小写 指定枚举类型原始数据类型...) } } } 注意 枚举类型可以Int String等基本类型值,对象是不可以,官方说必须是实现RawRepresentable 协议类型可以 使用 let..." case west = "4" } 提示: 你认为上面这样定义是否是正确,答案是否,因为系统不知道你枚举原始值是什么类型,这里系统没有进行类型推断,所有我们要给枚举添加原始值之前...重新实现SWIFT标准库可选类型(使用泛型技术) enum OptionalValue { case none case some(Wrapped) } var possibleInteger...if locale == Locale.base { }// 错误判断方式 编译错误,如果没有 case language(String) 这种赋值枚举,可以使用上面的方式,一点问题也没有,但是如果有这种类型

41420

Swift基础 初始化

此过程涉及该实例上每个存储属性设置初始值,并在新实例准备使用之前执行所需任何其他设置或初始化。 您通过定义初始化器来实现此初始化过程,初始化器就像可以调用以创建特定类型新实例特殊方法。...注意 如果您希望自定义值类型可以使用默认初始化器和成员初始化器初始化,也可以使用您自己自定义初始化器初始化,请在扩展编写自定义初始化器,而不是作为值类型原始实现一部分。...您可以定义一个方便初始化器,以调用与方便初始化器同一类指定初始化器,其中指定初始化器一些参数设置默认值。您还可以定义一个方便初始化器,特定用例或输入值类型创建该类实例。...您可以通过init关键字(init?)后放置问号来编写一个失败初始化器。 注意 您无法使用相同参数类型和名称定义故障和非故障初始化器。 故障初始化器会创建其初始化类型可选值。...(rawValue:)它接受一个名为rawValue适当原始值类型参数,如果找到匹配枚举情况,则选择匹配枚举情况,如果没有匹配值,则触发初始化失败。

13300

iOS使用IconFont

IconFont使用 github链接 背景: 最近设计提了要求,切图用IconFont 一开始,搜了IconFont使用后,选中了TBCityIconFont,使用了之后,发现对于图片支持不太好...然后就pass了,换了另一个SwiftIconic第三方库,这个库有个好处,是可以自动把.ttf文件里Icon生成一个枚举使用时候特别方便。...有兴趣可以自己看参考链接,其实就是参考链接里内容整合。 实现 首先,我想要是,传入一个Int类型(eg: 0xe654)或者字符串类型(eg :\u{E61A})都支持。...本地文件每次收入unicode吗不方便,定义两个枚举类型,一个是enum string,一个是enum UInt32,定义UInt32是为了可以兼容OC。...Code example in Swift 3. iconfont怎么iOS中使用了 Iconfont-阿里巴巴矢量图标库 github Iconic

1.5K32
领券