Swift 面向对象 1: 枚举

作者: 前进的苏辰 | 来源:发表于2016-08-05 20:01 被阅读0次

//swift语言中将结构体与枚举放在了面向对象的思想中因为枚举、结构体、类工作原理完全相同这三种面向对象的要素都可以定义属性、方法、下标、构造器、嵌套

//通常使用枚举定义常量当一个变量有多个值的使用我们可以将变量定义成枚举类型

//枚举、结构体定义的变量我们称其为实例类定义的变量我们称其为对象

1.枚举类型的定义格式

//枚举中一个case可以对应一个枚举值也可以一个case对应多个枚举值多个枚举值之间用逗号隔开

enum Season {

case Spring

case Summer

case Autumn

case Winter

}

enum WeekDay {

case Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday

}

var s = Season.Spring

print(s)

//[注意]swift语言中枚举没有默认常量值枚举值对应的常量必须手动设置

s = .Winter

print(s)

//[注意]枚举类型的变量类名明确或者能够推测出来赋值时可以直接通过.调到枚举值

//获取枚举变量对应的值最好使用switch语句判断

switchs {

case .Spring:

print("春天来了~")

case .Summer:

print("夏天到了~")

case .Autumn:

print("秋天近了~")

case .Winter:

print("冬天不远了")

}

//为枚举值添加常量值称为原始值rawValue

//枚举表示的常量值类型Int、Float、Double、String、Character

enum WeekDays: Int {

case Monday,Tuesday = 10,Wednesday,Thursday,Friday = -20,Saturday,Sunday

}

//枚举值的原始值是前一个原始值加1

var day = WeekDays.Saturday

print(day.rawValue)

print(day.hashValue)

//[注意]枚举值的原始值类型是数字类型那么原始值只能赋整数类型不能出现小数

//枚举值的原始值类型为字符串类型

//1.编译器默认字符串类型的原始值与枚举值同名

enum Sex: String {

case男

case女 = "nv"

case未知

}

var ss = Sex.女

print(ss.rawValue)

//2.枚举值原始值为字符类型

//编译器是不能推断字符类型枚举值的原始值必须手动全部赋值

enum SeasonAgain: Character {

case Spring = "C"

case Summer = "X"

case Autumn = "Q"

case Winter = "D"

}

var again = SeasonAgain.Summer

print(again.rawValue)

//通过原始值获取对应的枚举值

print(SeasonAgain(rawValue: "W"))

print(SeasonAgain(rawValue: "D")!)

2.枚举的关联值

//枚举不仅能够定义多个枚举值每个枚举值也可以携带多个多种类型的数据我们称枚举值携带的数据为关联值

//格式: case 枚举值(元组)

enum Trade {

case Buy(name: String,price: Double)

case Sell(name: String)

case Temp(String,String)

}

var tr = Trade.Buy(name: "Swift编程", price: 75.0)

//关联值不能通过标签或者下标直接获取

//如果想要获取关联值中的内容需要借助switch语句使用临时变量或者常量接收

func tradeAction(trade: Trade,name: String,price: Double){}

func tradeAction(trade: Trade){

switch trade {

    

case .Buy(let name123,let price123):

    print(name123,price123)

case .Sell(let name):

    print(name)

default:

    break

}

}

tradeAction(tr)

3.枚举的嵌套

//enum Date {

//

// case yyyy

// case MM

// case dd

//}

//enum Timer {

// case Birthday(date: Date)

//}

enum Timer {

case yyyy

case MM

case dd



indirectcase Birthday(date: Timer)

}

var time = Timer.Birthday(date: Timer.yyyy)

switchtime {

case .Birthday(date: .yyyy):

print("表示的是出生年")

case .Birthday(date: .MM):

print("表示的是出生月")

case .Birthday(date: .dd):

print("表示的是出生日")

case .yyyy,.MM,.dd:

print("1234567890")

default:

break

}

var a = 10

var b = a

a = 20

print(b)

func swap(inout a: Int) {

a = 1000

print(a)

}

var m = 10

swap(&m)

print(m)

相关文章

  • Swift--Swift语言中的面向对象特性

    Swift语言中的面向对象类型 枚举 结构体 类 可选链 访问限定 Swift语言中的面向对象类型 面向对象概念的...

  • Swift 面向对象 1: 枚举

    //swift语言中将结构体与枚举放在了面向对象的思想中因为枚举、结构体、类工作原理完全相同这三种面向对象的要素都...

  • 7.面向对象编程

    Swift 面向对象编程 面向对象的三大特性 继承封装多态 基本单元 枚举结构体类协议扩展 面向对象概述 从整体的...

  • swift面相对象的基础<一>

    面向对象的核心是类和对象,面向对象的三大特征:封装,继承和多肽。swift可以定义枚举,结构体和类三种面向对象的实...

  • swift问题小结

    1.swift是面向对象还是函数式编程语言 swift是函数式也是面向对象的语言。swift是面向对象语言,因为他...

  • 10 结构体和类 —— 《Swift3.0 从入门到出家》

    10 结构体和类 - —— 《Swift3.0 从入门到出家》 结构体和类 Swift中的面向对象5个要素:枚举、...

  • Swift: 枚举传递参数

    一般我们使用枚举,都是如下所示,定义一组相关值: swift中的枚举赋予了更多的类似面向对象的功能,比如继承、嵌套...

  • 每天学一点Swift----面向对象上(一)

    一. Swift的面向对象支持 1. Swift不仅提供来面向过程的支持,也提供了全面的面向对象支持。 2.与普通...

  • 每天学一点Swift----面向对象下(一)

    1.除了前面学习的关于枚举、结构体和类的基本语法外,Swift也很好地支持面向对象的三大特征:封装、继承和多态。(...

  • Swift特性

    Swift是面向对象还是函数式的编程语言 Swift 既是面向对象的,又是函数式的编程语言。说 Swift 是面向...

网友评论

    本文标题: Swift 面向对象 1: 枚举

    本文链接:https://www.haomeiwen.com/subject/fzxksttx.html