一.卓同學(xué)的 Swift 面試題
答 《卓同學(xué)的 Swift 面試題》
答《卓同學(xué)的 Swift 面試題》上
答《卓同學(xué)的 Swift 面試題》下
4道過濾菜鳥的iOS面試題
答卓同學(xué)的iOS面試題
四.[iOS]關(guān)于面試,做一次整理吧(包含BAT面試題目)
七.知乎熱門
八.2017年5月iOS招人心得(附面試題)
2017年iOS面試題總結(jié)
九.面試了 20 個初/中級 iOS 工程師之后(上)
面試了 20 個初/中級 iOS 工程師之后(下)
十.[iOS]關(guān)于面試坏怪,做一次整理吧(包含BAT面試題目)
[六]高級-問題 #2(講解)
Swift可以自定義運算符谦絮。自定義的運算符可以在全局使用。需要使用operator關(guān)鍵字。使用prefix, infix or postfix標(biāo)記運算符使用的位置。
prefix operator +++ {}
prefix func +++ (inout vector: Vector2D) -> Vector2D {
vector += vector
return vector
}
var toBeDoubled = Vector2D(x: 1.0, y: 4.0)
let afterDoubling = +++toBeDoubled
// toBeDoubled now has values of (2.0, 8.0)
// afterDoubling also has values of (2.0, 8.0)
自定義操作符,可以定義操作符的關(guān)聯(lián)性associativity和優(yōu)先級precedence牌借。associativity有三個值:left, right, none,默認(rèn)是none割按。precedence默認(rèn)值是:100膨报。
infix operator +- { associativity left precedence 140 }
func +- (left: Vector2D, right: Vector2D) -> Vector2D {
return Vector2D(x: left.x + right.x, y: left.y - right.y)
}
let firstVector = Vector2D(x: 1.0, y: 2.0)
let secondVector = Vector2D(x: 3.0, y: 4.0)
let plusMinusVector = firstVector +- secondVector
// plusMinusVector is a Vector2D instance with values of (4.0, -2.0)