LaneBlog

蝼蚁虽小,也有梦想

PHP Socket服务 | PHP微信开发框架 | 开源博客

初探Swift七 - 枚举

Clicks: 2506 Date: 2015-01-16 14:02:19 Power By 李轩Lane

swift ios

    

    初探Swift,Swift枚举。Swift枚举不同于C语言的枚举,C的枚举只能关联一个整形,而Swift枚举不但可以关联一个整形,更可以关联任意的数据类型。

    声明用enum开头,case 后面跟一个元素。可以不像C语言那样和整数关联。如下,ExamScore不是一个变量,而是一个数据类型,这个数据类型叫做ExamScore,同Int,String一样。

import UIKit

/**

 * 枚举(Enumerations)

 */

//声明用enum开头,case 后面跟一个元素。可以不像C语言那样和整数关联。如下,ExamScore不是一个变量,而是一个数据类型,这个数据类型叫做ExamScore,同Int,String一样。

enum ExamScore{

    case score_a

    case score_b

    case score_c

}

var myScore:Int = 40

//声明一个变量是刚才声明的ExamScore类型

var rank:ExamScore

if myScore >= 90 {

    //使用枚举:“枚举变量.枚举元素”

    rank = ExamScore.score_a

}else if myScore >= 60 {

    //使用枚举:枚举变量可以省略,只要“.枚举元素”

    rank = .score_b

}else{

    rank = .score_c

}

rank

switch rank{

    case .score_a:

        println("A等成绩")

    case .score_b:

        println("B等成绩")

    case .score_c:

        println("C等成绩")

}


/**

 * 枚举 - 关联一个值

 */

enum Month:Int{

    case Jan=1, Feb, Mar

}

//声明了Jan=1,Feb和Mar系统会自动赋值为2和3

//使用

//此时值为1

Month.Jan.rawValue

//另一种好似用方式

var myMonth:Month

myMonth = .Jan

myMonth.rawValue

//寻找关联值为2的那个枚举元素,返回一个可选型,因为如果寻找1000的那个元素,是找不到。

var nextMonth = Month(rawValue: 2)

nextMonth!.rawValue

//不仅仅,还可以关联字符串

enum MonthString:String{

    case Jan="一月"

    case Feb="二月"

    case Mar="三月"

}

//一月

MonthString.Jan.rawValue



/**

 * 复杂的枚举

 */

enum UserInfo{

    case birthday(Int, Int, Int)

    case name(String)

}

let xiaomingBirthday = UserInfo.birthday(1990, 1, 10)

let xiaomingName:UserInfo = .name("小明")


switch xiaomingBirthday{

    case .birthday(let year, let month, let day):

        println("\(year)年\(month)月\(day)")

    case .name(let name):

        println("大家号,我叫\(name)")

}


©2014 www.lanecn.com , All rights reserved. Power By Li Xuan.  京ICP备14005030号