Swift访问控制运算符(五)
1. 访问控制, Swift定义了三级访问控制, 决定了应用程序哪些部分可以访问哪些信息.
public(公共类): 方法和属性可供App任意部分访问.
internal(内部): 内部数据只能在定义这些数据的模块内使用, 模块是一个应用程序, 库, 或框架. internal是默认的访问控制级别. internal可以省略
private(私有): 只能供声明他的文件访问, 可以防止暴漏信息
将一个方法或属性声明为public时, APP中所有人都可以看到他
public var publicProperty = 123 //可供所有人访问
private var privateProperty = 123 //只能在当前源文件进行访问
private(set) var privateSetProperty = 123 //源文件可读写, 其他文件只可以读取
2. 运算符, Swift内置运算符(+, -, *, /)等, 一个运算符实际上是一个函数, 他接受一个或两个值作为参数, 并返回一个新的值.
func +(left: Int, right: Int) -> Int {
return left + right
} //实际上会以无穷递归方式调用自己, 导致app挂起
3. Swift允许重新定义运算符, 以及为新运算符重载已有运算符.
定义Vector2D对象:
class Vector2D {
var x: Float = 0.0; var y: Float = 0.0
init(x: Float, y: Float) { self.x = x; self.y = y; }
}
如果希望使用+运算符将这两个对象加在一起, 只需提供一个+函数的实现:
func +(left: Vector2D, right: Vector2D) -> Vector2D {
let result = Vector2D(x: left.x + right.x, y: left.y + right.y)
return result
}
使用: let first = Vector2D(x: 2, y: 3); let second = Vector2D(x: 1, y: 2)
let result = first + second // = (x: 3, y: 5)