Swift学习笔记八:枚举
1. 枚举语法
1)枚举的定义
使用enum关键词而且把它们的整个定义放在一对大括号内:
enum SomeEumeration { // enumeration definition goes here }
以下来看看详细样例:
enum CompassPoint {
case North
case South
case East
case West
}
注意:
①不像C和Objective-C一样,Swift的枚举成员在被创建时不会被赋予一个默认的整数值。在上面的CompassPoints样例中,North。South,East和West并非等于0,1。2和3
②良好的书写习惯是,每一个枚举变量均以大写开头,而且枚举的名字不要使用复数形式
上面的样例或者也能够这样写:
enum CompassPoint {
case North, South, East, West }
将全部成员放在一个case中。并用逗号隔开
2)枚举类型的使用
枚举类型使用时和使用类的属性一样。
var a =
CompassPoint.North
3)省略枚举类型
当a的类型被判断为CompassPoint的一个可能值时。你能够使用更短的点(.)语法将其设置为还有一个CompassPoint的值,省略枚举类型:
var a = CompassPoint.North
a = .South
2.匹配枚举值和Switch语句
switch a {
case .North:
println("Lots of planets have a north")
case .South:
println("Watch out for penguins")
case .East:
println("Where the sun rises")
case .West:
println("Where the skies are blue")
}
重点:
①当枚举值和switch语句连用时,也能够省略枚举类型
②使用switch时,必须考虑到全部的枚举对象,否则编译器会报错
3. 实例值
枚举类型能够定义实例值。在使用的时候再给实例赋详细的值
enum test{
case name(String)
case count(Int,Int)
} //枚举定义的是多种不同类型
var a = test.name("小笨狼") //枚举类型中详细值能够在使用时才赋值
switch a{
case .name(let nameString): //定义nameString来存放枚举的值,这里是"小笨狼"
println(nameString)
case let .count(count1,count2): //假设有多个值。能够将let或者var放在括号外面一起定义
println(count1+count2)
}
重点:
①枚举值能够是不同类型的,不论什么类型的值
②枚举定义时不一定要赋值,能够在使用时再赋值
③在switch中使用时。须要再定义变量来存放枚举值
4.原始值
1)原始值定义
原始值就和C语言中的枚举差点儿相同
enum test:Int{
case first = 1
case second,third
}
重点:
①在定义的时候申明原始值类型,这里是Int类型。
原始值类型能够是字符串。字符,或者不论什么整型值或浮点型值
②每一个原始值在它的枚举声明中必须是唯一的。
③当整型值被用于原始值。假设其它枚举成员没有值时。它们会自己主动递增。
这里second=2,third=3
2)原始值的使用
使用枚举成员的toRaw方法能够訪问该枚举成员的原始值:
let a =
test.second.toRaw()
//a=2 Int类型
使用枚举的fromRaw方法能够找到具有特定原始值的枚举成员
let b =
test.fromRaw(2)
//b = test.second
5.函数
枚举中还能够使用函数
enum test:Int{
case first = 1
case second,third
func descript() -> String{
switch self{
case .first:
return "first"
case .second:
return "second"
case .third:
return "third"
}
}
}
if let c = test.fromRaw(2) {
println(c.descript()) //输出second
}
打印c.descript()输出second,可是假设c不在if中定义,编译器会报错,找不到descript的成员变量,这个问题我还没弄清楚为什么
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGJlbmxhbmc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
Swift学习笔记八:枚举的更多相关文章
- Swift学习笔记 - 位移枚举的按位或运算
在OC里面我们经常遇到一些枚举值可以多选的,需要用或运算来把这些枚举值链接起来,这样的我们称为位移枚举,但是在swift里面却不能这么做,下面来讲解一下如何在swift里面使用 OC的位移枚举的区分 ...
- Swift学习笔记(10)--枚举
1.定义语法: enum SomeEnumeration { // enumeration definition goes here } 2.使用 enum CompassPoint { case N ...
- swift学习笔记之-枚举
//枚举定义 import UIKit //枚举定义 (枚举.结构体.类的名字首字母必须大写,表示为定义了新的类型) /*枚举为一组相关的值定义了一个共同的类型,使你可以在你的代码中以类型安全的方式来 ...
- Swift 学习笔记 enum 枚举类型
异端,异端啊,我感觉这是map吧? enum ATMStatus { case Success(Int) case Error(String) } func withdraw(amount: Int) ...
- Swift学习笔记八
函数 Swift的函数语法非常独特,也提供了很高的灵活性和可读性.它可以充分表达从简单的无参数C风格函数到复杂的拥有局部变量和外部变量的OC风格的方法.参数可以有默认值,方便函数的调用.Swift中的 ...
- 【swift学习笔记】二.页面转跳数据回传
上一篇我们介绍了页面转跳:[swift学习笔记]一.页面转跳的条件判断和传值 这一篇说一下如何把数据回传回父页面,如下图所示,这个例子很简单,只是把传过去的数据加上了"回传"两个字 ...
- Swift学习笔记(一)搭配环境以及代码运行成功
原文:Swift学习笔记(一)搭配环境以及代码运行成功 1.Swift是啥? 百度去!度娘告诉你它是苹果最新推出的编程语言,比c,c++,objc要高效简单.能够开发ios,mac相关的app哦!是苹 ...
- CLR_Via_C#学习笔记之枚举
CLR_Via_C#学习笔记之枚举 枚举类型(Enum)定义的一组"符号名称/值"配对:因为枚举类型使用程序更容易编写.阅读和维护,而且它是强类型: 枚举是值类型:由System. ...
- Learning ROS forRobotics Programming Second Edition学习笔记(八)indigo rviz gazebo
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS forRobotics Pro ...
随机推荐
- cx_Oracle使用方法二
下载地址: https://pypi.python.org/pypi/cx_Oracle/5.2.1, 下载的时候注意数据库版本和操作系统环境. 技术手册: http://cx-oracle.read ...
- 【读书笔记】【CLR via C#】【第一章】The CLR’s Execution Model
内容提要 本章的目的是对.Net 框架的设计做一个总体的介绍,包括介绍框架中使用的一些技术.定义一些术语.同时会展示从源代码生成应用程序(或者一些包含了一些自定义类型的可以发布的组件),并且会解释程序 ...
- Java POI 导出EXCEL经典实现 Java导出Excel
转自http://blog.csdn.net/evangel_z/article/details/7332535 在web开发中,有一个经典的功能,就是数据的导入导出.特别是数据的导出,在生产管理或者 ...
- js optimization and performance
http://www.codeproject.com/Articles/551733/Walkthrough-3aplusUsingplustheplusRequireJSplusOpt http:/ ...
- 如何从 Xcode 控制台输出 JavaScript 的 log?
调试 UIWebView 中的 JavaScript 一直以来都是很痛苦的一件事.通常我们会通过下面的方法调试 HTML 和 JavaScript. 1.第一种,使用桌面浏览器调试.大多数现代浏览器都 ...
- 【HDU4552】 怪盗基德的挑战书(后缀数组)
怪盗基德的挑战书 Problem Description “在树最美丽的那天,当时间老人再次把大钟平均分开时,我会降临在灯火之城的金字塔前,带走那最珍贵的笑容.”这是怪盗基德盗取巴黎卢浮宫的<蒙 ...
- Java开发手册
<Java开发手册> 基本信息 作者: 桂颖 谷涛 出版社:电子工业出版社 ISBN:9787121209161 上架时间:2013-8-12 出版日期:2013 年7月 开本 ...
- JS获取TextArea和Input的同步值
在提交表单时,如果只是表单值,用一个form即可,但有时候需要将整个表单一起提交,则可通过以下js实现. <!DOCTYPE html> <html xmlns="http ...
- Android日志框架darks-logs使用教程
一.配置文件 在使用darks-logs之前,我们需要为它创建一个名叫logd.properties的配置文件.如果你是需要在JAVA或WEB上使用该组件,那么你可以像配置log4j一样将它放在cla ...
- java学习面向对象之异常之二
我们知道当我们处理异常的时候,一个是声明,另外一个是捕捉. 捕捉:异常处理的捕捉方式,这是可以对异常进行针对性处理的方式.具体格式是: try { //需要被检测的异常 } catch(异常类 变量) ...