一.卓同学的 Swift 面试题
答 《卓同学的 Swift 面试题》
答《卓同学的 Swift 面试题》上
答《卓同学的 Swift 面试题》下
七.知乎热门
八.2017年5月iOS招人心得(附面试题)
2017年iOS面试题总结
九.面试了 20 个初/中级 iOS 工程师之后(上)
面试了 20 个初/中级 iOS 工程师之后(下)
[六]高级-问题 #2(讲解)
Swift可以自定义运算符。自定义的运算符可以在全局使用。需要使用operator关键字。使用prefix, infix or postfix标记运算符使用的位置。
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)
自定义操作符,可以定义操作符的关联性associativity和优先级precedence。associativity有三个值:left, right, none,默认是none。precedence默认值是: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)