Swiftのextensionで += 演算子を実装する
整数などでは
age += 1
といった記述はできるのにCGPointではなぜか実装されていない。
そんな時はextension使って自作できるのがSwiftの楽しいところ。
CGPointだと + の演算子を実装するのに
しかし += 演算子の場合には
p += p1
↑このように左側のCGPointを書き換える必要がある。
こういう場合はmutatingキーワードを使うんだよな!と思ったけど違った。
また一つextensionの記述方法を知ったわ。
macOS 10.15.4 Catalina
Xcode 11.5
Swift 5.2.4
age += 1
といった記述はできるのにCGPointではなぜか実装されていない。
そんな時はextension使って自作できるのがSwiftの楽しいところ。
CGPointだと + の演算子を実装するのに
extension CGPoint {このように記述できる。
static func + (left: CGPoint, right: CGPoint) -> CGPoint {
return CGPoint(x: left.x + right.x,
y: left.y + right.y)
}
}
//使う時は
let p1 = CGPoint(x: 1, y: 2)
let p2 = CGPoint(x: 3, y: 4)
let p = p1 + p2
しかし += 演算子の場合には
p += p1
↑このように左側のCGPointを書き換える必要がある。
こういう場合はmutatingキーワードを使うんだよな!と思ったけど違った。
static func += (lhs: inout CGPoint, rhs: CGPoint) {↑このように左側のにinoutキーワード追加、returnなしでいいみたい。
lhs.x = lhs.x + rhs.x
lhs.y = lhs.y + rhs.y
}
また一つextensionの記述方法を知ったわ。
macOS 10.15.4 Catalina
Xcode 11.5
Swift 5.2.4
スポンサーサイト