交換運算子
讓我們新增一個自定義運算子來乘以 CGSize
func *(lhs: CGFloat, rhs: CGSize) -> CGSize{
let height = lhs*rhs.height
let width = lhs*rhs.width
return CGSize(width: width, height: height)
}
現在這個工作
let sizeA = CGSize(height:100, width:200)
let sizeB = 1.1 * sizeA //=> (height: 110, width: 220)
但是如果我們嘗試反向操作,我們會收到錯誤
let sizeC = sizeB * 20 // ERROR
但它很簡單,可以新增:
func *(lhs: CGSize, rhs: CGFloat) -> CGSize{
return rhs*lhs
}
現在運算子是可交換的。
let sizeA = CGSize(height:100, width:200)
let sizeB = sizeA * 1.1 //=> (height: 110, width: 220)