Swift笔记<九>枚举和结构体
2017-12-31 本文已影响54人
大基本功
枚举
枚举概念
- 枚举定义了一个通用类型的一组相关的值,使你可以在你的代码中以一个安全的方式来使用这些值
- C/OC语言中枚举指定相关名称为一组整形值
- Swift 中的枚举更加灵活,可以提供一个值是字符串,一个字符或一个整形值或浮点值
枚举类型的语法
- 格式
enum Direction {
case east
case west
case south
case north
}
Direction.east
//或者
enum Direction {
case east, west, south, north
}
- 规范
- 枚举类型第一个字母小写
给枚举类型赋值
- swift里面,枚举类型默认情况下,不表示任何类型,就是一个标识
- 枚举类型可以是字符串/字符/整型/浮点型
enum Direction: Int { case east = 2 case west =3 case south =4 case north =5 } //rawValue代表的是一个枚举对应的原始值 //枚举值 → 原始值 let rv = Direction.east.rawValue //原始值→枚举值 let z Direction(rawValue : 6) //枚举绑定字符串 enmu Path:String { case cache = "user/desktop/cache" case document = "user/desktop/doc" } func text (path:Path){ if path == .cache { print(path.rawValue) } }
结构体
结构体的基本使用
- 结构体概念
- 结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合
- 结构体(struct)指的是一种数据结构
- 结构体是值类型,在方法中传递时是值传递
- 结构体格式
- struct 结构体名称{ 属性和方法}
- 无论是枚举还是结构体都可以写方法
- 类型方法 : static func
- 实例方法 : func
struct Point { //实例属性 var x : Double var y : Double //实例方法 func distance() { print("计算两点之间的距离",x,Point.z) } //类型属性 static var z :Double = 0 //类型方法 static func dis() { print("xxx",z) } } Point.dis()
- 计算两点间的距离
func distance(p1:Point ,p2:Point)→Double{ return sqrt(pow(p1.x-p2.x,2)+pow(p1.y-p2.y,2)) }
结构体的扩充构造函数
- 默认情况下,结构体会自动创建一个"逐一构造器"→目的就是为了让所有"非可选"成员变量都能有值
- 扩充构造函数
struct Point{
//非可选,永远都不会为nil
var x :Double
var y :Double
var z :Double?
//自定义构造函数 != 普通函数
//不加func
//必须使用init作为名称
//在构造函数内部,必须保证,所有的非可选属性,必须有值
//如果我们现在自己定义的构造函数,那么系统自动生成的逐一构造器,就没有了
init(x:Double,y:Double){
self.x = x
self.y = y
}
init(x:Double,y:Double,z:Double){
self.x = x
self.y = y
self.z = z
}
}
//我们直接使用时系统提供的"构造函数"=="构造实例函数"
//let p = Point(x:1,y:2)
//p.z = nil
let p = Point(x: 1, y: 2)
let p1 = Point(x: 1, y: 2, z: 3)
// 系统默认生成的构造函数→"逐一构造器"
// 逐个给里面所有的非可选属性赋值,目的,就是为了保证当一个实例创建好之后,里面所有的非可选属性,都有值