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="">

最新文章

  1. 一款强大的Android网络渗透软件dsploit
  2. was部分更新
  3. Luci中cbi控件类型总结
  4. Python 2.7.9 Demo - isinstance
  5. java mail使用中遇到的550类型错误
  6. 【转】VS 代码行数统计
  7. php微信接口验证写法
  8. 转: linux下错误的捕获:errno和strerror的使用
  9. 只响应ccTouchBegan的问题
  10. ICE 介绍及实现
  11. PHP学习之-Mongodb在Windows下安装及配置
  12. Android tools:context=".MainActivity"的作用
  13. 通过反射获取所有的Action 一般用于权限管理
  14. highcharts 系统梳理笔记
  15. learning makefile foreach
  16. C# 获取文件详细备注信息 (如图片、视频实际创建时间)
  17. Django中模板使用
  18. 为什么Sql Server的查询有时候第一次执行很慢,第二次,第三次执行就变快了
  19. iPhone8发布后那些搞笑Geek段子合辑 #精选搞笑GEEK段子
  20. Android短轮询解决方案——CountDownTimer+Handler

热门文章

  1. PHP扩展Redis编译安装
  2. js事件冒泡原理及处理
  3. 写的一个Makefile
  4. 【Java】Java里String 的equals和==
  5. 【HTTP】全面比较HTTP GET与POST方法
  6. Js 表单序列化
  7. 【uva11374】Airport Express 最短路
  8. input text的outline属性
  9. js键盘控制DIV移动
  10. eclipse报错 com/genuitec/eclipse/j2eedt/core/J2EEProjectUtil 转