枚举
枚举概念
- 枚举定义了一个通用类型的一组相关的值,使你可以在你的代码中以一个安全的方式来使用这些值
- C/OC语言中枚举指定相关名称为一组整形值
- Swift 中的枚举更加灵活,可以提供一个值是字符串,一个字符或一个整形值或浮点值
枚举类型的语法
enum Direction {
case east
case west
case south
case north
}
Direction.east
//或者
enum Direction {
case east, west, south, north
}
给枚举类型赋值
结构体
结构体的基本使用
- 结构体概念
- 结构体(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)
// 系统默认生成的构造函数→"逐一构造器"
// 逐个给里面所有的非可选属性赋值,目的,就是为了保证当一个实例创建好之后,里面所有的非可选属性,都有值