ぜのぜ

しりとりしようぜのぜのぜのぜ

93日目

日記

今日はやけにお腹すいた

今日書いたコード

struct Vector2D {
    var x = 0.0, y = 0.0
}

extension Vector2D: CustomDebugStringConvertible {
    var debugDescription: String {
        "(\(x), \(y))"
    }
}

extension Vector2D {
    static func + (left: Vector2D, right: Vector2D) -> Vector2D {
        return Vector2D(x: left.x + right.x, y: left.y + right.y)
    }
}

extension Vector2D {
    static prefix func - (vector: Vector2D) -> Vector2D {
        return Vector2D(x: -vector.x, y: -vector.y)
    }

    static postfix func -- (vector: Vector2D) -> Vector2D {
        return Vector2D(x: vector.x - 1, y: vector.y - 1)
    }
}
let positive = Vector2D(x: 3.0, y: 4.0)
let negative = -positive
print(negative) // (-3.0, -4.0)
let alsoPositive = -negative
print(positive) // (3.0, 4.0)
let decremented = positive--
print(decremented) // (2.0, 3.0)

感想

単項演算子を定義できるの知らなかった.三項演算子の記述は今日読んだ限りではなかったけど流石になさそう.