热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

swift_017(Swift的枚举)

***********swift学习之17--枚举--***************************枚举简单的说也是一种数据类型,只不过是这种数据类型只包含自

//***********swift学习之17--枚举--***************************


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

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

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

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

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

// 总之比 Objective C 的枚举更丰富、更灵活。也比 C 的枚举更具象。更像Objective C的类。


// 语法

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


enum DaysOfWeek {

    // 枚举定义在这里

    case Monday

    case Tuesday

    case Wedensday

    case Thursday

    case Friday

    case Saturday

    case Sunday

}


// case 要写好多遍。如果不用写就好了。


var someDay = DaysOfWeek.Friday

someDay = .Sunday


switch someDay {

case .Monday:

    print("Monday")

case .Tuesday:

    print("Tuesday")

case .Wedensday:

    print("Wedensday")

case .Thursday:

    print("Thursday")

case .Friday:

    print("Friday")

case .Saturday:

    print("Saturday")

case .Sunday:

    print("Sunday")

    

}


/*

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

 */


// someDay = DaysOfWeek.Friday

// someDay = .Sunday

// someDay的类型可以在它被DaysofaWeek的一个可能值初始化时推断出来。

// 一旦someDay被声明为一个DaysofaWeek,我们就可以缩写语法(.)去设置重新赋DaysofaWeek的值


/*

 原始值

  Month 后面跟 :Int 来声明原始值枚举的类型,然后在定义case成员的时候需要提供原始值。

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

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

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

 

 */

enum DayDay:Int {

    case Yesterday = 0

    case Today = 1

    case Tommorrow = 2

}


// rawValue序号

let myday = DayDay.Yesterday.rawValue

print("我的天-----\(myday)")



enum Month: Int {

    case January = 1, February, March, April, May, June, July, August, September, October, November, December

}


let yearMonth = Month.May.rawValue

print("数字月份为: \(yearMonth)")



// 相关值

var imageView:UIImageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 2000, height: 600))

imageView.image = UIImage(named: "test.png")



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

enum Student {

    case Name(String)

    case Mark(Int,Int,Int)

}

var studDetails = Student.Name("Runoob")

var studMarks = Student.Mark(98,97,95)


switch studDetails {

case .Name(let studName):

    print("学生的名字是: \(studName)")

case .Mark(let Mark1, let Mark2, let Mark3):

    print("学生的成绩是: \(Mark1),\(Mark2),\(Mark3)")

}


推荐阅读
author-avatar
妞妞吃粑粑_577
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有