class Point {
var x: Int
var y: Int
init(x: Int, y: Int) {
self.x = x
self.y = y
}
}
//global function
prefix func ++ (p: inout Point) -> Point {
p = Point(x: p.x + 1, y: p.y + 1)
return p
}
//global function
postfix func ++ (p: inout Point) -> Point {
p = Point(x: p.x + 1, y: p.y + 1)
return p
}
//global function
prefix func - (p: Point) -> Point {
let point = Point(x: -p.x, y: -p.y)
return point
}
var p = Point(x: 1, y: 1)
let p1 = p++
//p.x is 2, p.y is 2
let p2 = ++p
//p.x is 3, p.y is 3
p = -p
//p.x is -3, p.y is -3
let p3 = -p
//p.x is 3, p.y is 3
print("x = \(p.x), y = \(p.y)")
print("x = \(p1.x), y = \(p1.y)")
print("x = \(p2.x), y = \(p2.y)")
print("x = \(p3.x), y = \(p3.y)")