Swift在线运行

版本:
运行结果
教程手册
代码仓库
极速运行
交互输入
极速运行模式,更高效的运行,点击编辑器上方的运行按钮即刻体验吧。
以下是用户最新保存的代码
类型转换Demo 发布于:2021-11-08 17:03 闭包引起的相互应用导致内存泄漏问题 发布于:2021-11-08 16:49 无主引用解决相互引用导致的内存泄漏问题 发布于:2021-11-08 16:35 使用弱引用解决循环引用导致的内存泄漏 发布于:2021-11-08 16:28 循环引用导致的内存无法释放 发布于:2021-11-08 16:27 嵌套函数 传递值 发布于:2021-09-24 19:27 定义参数 各种类型 发布于:2021-09-24 19:26 定义类和创建实例 发布于:2021-09-24 19:25 s双色球的运行代码 发布于:2021-09-23 17:13 比较代码的不同 发布于:2021-09-23 17:05 判断和符号 发布于:2021-09-23 17:04 定义和赋值 发布于:2021-09-23 17:03 元组的类型 发布于:2021-09-23 17:03 case的使用方法必须存在可执行的代码 发布于:2021-09-23 17:00 字典的用法 发布于:2021-09-23 17:01 创建空集合和创建集合赋值 插入 insert() 循环 for ...in 删除 remove() 包含 contains() 发布于:2021-09-23 14:46 是完数的代码 发布于:2021-09-23 17:10 一年中的第几天 发布于:2021-07-12 00:16 无重复的三位数 发布于:2021-07-12 00:03 三位水仙花数计算 发布于:2021-07-11 23:47 罗列出范围内质数 发布于:2021-07-11 23:29 Swift数据结构: 链表(Linked List) 发布于:2021-06-27 18:03 swift数据结构:树 发布于:2021-06-25 10:21 面向协议编程 发布于:2021-06-24 17:58 泛型约束试验 发布于:2021-06-23 18:06 泛型试验案例 发布于:2021-06-23 16:45 异常处理及 App 的生命周期:error协议 发布于:2021-06-28 14:22 用协议建立规则 protocol 发布于:2021-06-23 14:55 多线程:存储和 CPU 的运作方式 发布于:2021-06-22 17:11 class类和Enumeration枚举的使用 发布于:2021-06-22 16:41 结构体的运用 发布于:2021-06-22 15:12 我的代码! 发布于:2020-11-18 11:54 string test 发布于:2020-12-01 10:46 第一个swift测试类 发布于:2020-07-21 18:45 [更多]
显示目录

枚举



Swift 枚举

枚举简单的说也是一种数据类型,只不过是这种数据类型只包含自定义的特定数据,它是一组有共同特性的数据的集合。

Swift 的枚举类似于 Objective C 和 C 的结构,枚举的功能为:

  • 它声明在类中,可以通过实例化类来访问它的值。

  • 枚举也可以定义构造函数(initializers)来提供一个初始成员值;可以在原始的实现基础上扩展它们的功能。

  • 可以遵守协议(protocols)来提供标准的功能。

语法

Swift 中使用 enum 关键词来创建枚举并且把它们的整个定义放在一对大括号内:

enum enumname {
   // 枚举定义放在这里
}

例如我们定义以下表示星期的枚举:

import Cocoa

// 定义枚举
enum DaysofaWeek {
    case Sunday
    case Monday
    case TUESDAY
    case WEDNESDAY
    case THURSDAY
    case FRIDAY
    case Saturday
}

var weekDay = DaysofaWeek.THURSDAY
weekDay = .THURSDAY
switch weekDay
{
case .Sunday:
    print("星期天")
case .Monday:
    print("星期一")
case .TUESDAY:
    print("星期二")
case .WEDNESDAY:
    print("星期三")
case .THURSDAY:
    print("星期四")
case .FRIDAY:
    print("星期五")
case .Saturday:
    print("星期六")
}

以上程序执行输出结果为:

星期四

枚举中定义的值(如 Sunday,Monday,……和Saturday)是这个枚举的成员值(或成员)。case关键词表示一行新的成员值将被定义。

注意: 和 C 和 Objective-C 不同,Swift 的枚举成员在被创建时不会被赋予一个默认的整型值。
在上面的DaysofaWeek例子中,Sunday,Monday,……和Saturday不会隐式地赋值为0,1,……和6。
相反,这些枚举成员本身就有完备的值,这些值是已经明确定义好的DaysofaWeek类型。
var weekDay = DaysofaWeek.THURSDAY

weekDay的类型可以在它被DaysofaWeek的一个可能值初始化时推断出来。一旦weekDay被声明为一个DaysofaWeek,你可以使用一个缩写语法(.)将其设置为另一个DaysofaWeek的值:

var weekDay = .THURSDAY

当weekDay的类型已知时,再次为其赋值可以省略枚举名。使用显式类型的枚举值可以让代码具有更好的可读性。

枚举可分为相关值与原始值。

相关值与原始值的区别

相关值 原始值
不同数据类型 相同数据类型
实例: enum {10,0.8,"Hello"} 实例: enum {10,35,50}
值的创建基于常量或变量 预先填充的值
相关值是当你在创建一个基于枚举成员的新常量或变量时才会被设置,
并且每次当你这么做得时候,它的值可以是不同的。
原始值始终是相同的

相关值

以下实例中我们定义一个名为 Student 的枚举类型,它可以是 Name 的一个相关值(Int,Int,Int,Int),或者是 Mark 的一个字符串类型(String)相关值。

import Cocoa

enum Student{
    case Name(String)
    case Mark(Int,Int,Int)
}
var studDetails = Student.Name("W3CSchool")
var studMarks = Student.Mark(98,97,95)
switch studMarks {
case .Name(let studName):
    print("学生的名字是: \(studName)。")
case .Mark(let Mark1, let Mark2, let Mark3):
    print("学生的成绩是: \(Mark1),\(Mark2),\(Mark3)。")
}

以上程序执行输出结果为:

学生的成绩是: 98,97,95。

原始值

原始值可以是字符串,字符,或者任何整型值或浮点型值。每个原始值在它的枚举声明中必须是唯一的。

在原始值为整数的枚举时,不需要显式的为每一个成员赋值,Swift会自动为你赋值。

例如,当使用整数作为原始值时,隐式赋值的值依次递增1。如果第一个值没有被赋初值,将会被自动置为0。

import Cocoa

enum Month: Int {
    case January = 1, February, March, April, May, June, July, August,
    September, October, November, December
}

let yearMonth = Month.May.rawValue
print("数字月份为: \(yearMonth)。")

以上程序执行输出结果为:

数字月份为: 5。
由JSRUN为你提供的Swift在线运行、在线编译工具
        JSRUN提供的Swift在线运行,Swift 在线运行工具,基于linux操作系统环境提供线上编译和线上运行,具有运行快速,运行结果与常用开发、生产环境保持一致的特点。

title

使用此草稿 删除草稿

注册登录后可减少验证码的弹出,点击前往 注册 | 登录

皮肤:

运行模式:

嵌入代码 iframe嵌入: