I wonder how the + function is used directly.
extension CGPoint { static func add(lhs: Self, rhs: Self) -> CGPoint { CGPoint(x: lhs.x + rhs.x, y: lhs.y + rhs.y) } static func +(lhs: Self, rhs: Self) -> CGPoint { CGPoint(x: lhs.x + rhs.x, y: lhs.y + rhs.y) } } private func testCGPoint() { let dummy1 = CGPoint(x: 2, y: 3) let dummy2 = CGPoint(x: 4, y: 5) let dummy3: CGPoint = .add(lhs: dummy1, rhs: dummy2) let dummy4: CGPoint = dummy1 + dummy2 }
in my expectation, I thought that the + function would be used like the add function. i thought this form.
CGPoint.+(lhs: dummy1, rhs: dummy2)
But the + function did not.
How are you doing this?
A Swift expert may provide a better answer.
+
is the builtin standard infix operator equivalent to infix operator +: AdditionPrecedence
which you are overriding by extending CGPoint (vs add which is just a plain old static function and cannot be used as an infix operator between two targets).
https://developer.apple.com/documentation/swift/operator-declarations
You can define your own custom infix operator (with naming restricted to specific characters) like this: (although recommend against this)
infix operator ✜: AdditionPrecedence // heavy open centre cross extension CGPoint { static func ✜(lhs: Self, rhs: Self) -> CGPoint { CGPoint(x: lhs.x + rhs.x, y: lhs.y + rhs.y) } } private func testCGPoint() { print(CGPoint(x: 2, y: 3) ✜ CGPoint(x: 4, y: 5)) }
https://docs.swift.org/swift-book/LanguageGuide/AdvancedOperators.html#ID46 (Custom Operators)
https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#ID418 (Lexical Structure - Operators)