[swift] 연산자 오버로딩 규칙

Swift에서는 사용자 정의 타입에 대한 연산자 동작을 수정할 수 있는 연산자 오버로딩을 지원합니다. 이를 통해 사용자가 정의한 타입에 대해 기본 타입처럼 연산을 수행할 수 있습니다.

연산자 오버로딩 규칙

  1. 기존 연산자에 적용할 수 있는 타입을 고려해야 합니다. 예를 들어, 새로운 타입에 + 연산자를 사용하고자 하는 경우, 해당 타입에 + 연산자를 지원하도록 오버로딩해야 합니다.

  2. 새로운 타입에 대해 적절한 의미를 가진 연산자를 선택해야 합니다. 연산자 오버로딩은 타입에 맞지 않는 연산자를 지원하거나 부적절한 동작을 정의하는 데 사용해서는 안 됩니다.

  3. 연산자 오버로딩은 커뮤니티 기준과 일반적인 예상에 부합해야 합니다. 다른 개발자가 코드를 읽고 이해하기 쉽도록 일관성 있게 사용하는 것이 중요합니다.

// Example of operator overloading in Swift
struct Vector2D {
    var x = 0.0, y = 0.0
}

// Overloading the `+` operator for Vector2D
static func +(left: Vector2D, right: Vector2D) -> Vector2D {
    return Vector2D(x: left.x + right.x, y: left.y + right.y)
}

위의 예제에서는 Vector2D 구조체에 대해 + 연산자를 오버로딩하여 두 벡터를 더하는 동작을 정의했습니다.

연산자 오버로딩을 사용할 때는 위의 규칙을 고려하여 타입에 적합한 동작을 제공하는 것이 중요합니다.

더 많은 정보는 공식 Swift 문서에서 확인할 수 있습니다.