-
[Swift] μ°μ°μ ꡬν (Implementing Operator Methods)iOS/π Swift 2021. 3. 18. 20:40
μ°λ¦¬κ° μλ μ°μ°μλ€μ λͺ¨λ νμ μ μ§μνμ§λ μμ΅λλ€.
+, -, ,%, /, // λ±
μλ₯Ό λ€λ©΄ 컀μ€ν νμ μ λν΄, μ°λ¦¬λ μ§μ μ°μ°μλ₯Ό ꡬνν΄μΌ ν©λλ€.
κΈ°λ³Έ ν¨ν΄
static func operator (paramters) -> ReturnType { ... }
operator μλ μ°μ°μκ° λ€μ΄κ°λλ€.
parameters μλ μ°μ°μμ μ κ³Ό λ€μ λΆμ ν(μ’ν, μ°ν νΉμ λ¨ν)λ€μ κ°μ νλΌλ―Έν°λ‘ λ°κ² λ©λλ€.
ReturnType μ μ°μ°κ²°κ³Ό κ°μ νμ μ λλ€. μλ₯Ό λ€μ΄ '==' (equal to) μ°μ°μλΌλ©΄ Boolμ λ°νν κ²μ λλ€.
νμ©
struct Point { var x: Double var y: Double static func ==(lhs: Point, rhs: Point) -> Bool { return (lhs.x == rhs.x) && (lhs.y == rhs.y) } static func *(lhs: Point, rhs: Point) -> Point { return Point(x: lhs.x * rhs.x, y: lhs.y * rhs.y) } static prefix func -(value: Point) -> Point { return Point(x: -value.x, y: -value.y) } static postfix func ++(value: inout Point) -> Point { let originValue = value value.x += 1.0 value.y += 1.0 return originValue } }
Point λΌλ 컀μ€ν νμ (struct) μ μ¬μ©ν μ μλ μ°μ°μ ( == , * , λ¨νμ°μ°μ -, ννμ°μ°μ ++ ) λ₯Ό ꡬνν΄ λ³΄μμ΅λλ€.
μ½λλ₯Ό 보면 κ°λ¨νκ² μ΄ν΄ν μ μμΌλ―λ‘ μ€λͺ μ μλ΅νκ² μ΅λλ€ !! ππ»
" μ°μ°μλ ν¨μμ λλ€ "
ν¨μλ μΌκΈ κ°μ²΄ μ΄λ―λ‘ λ³μμ μ μ₯, νλΌλ―Έν°λ‘ μ λ¬, λ¦¬ν΄ κ°μΌλ‘ μ¬μ©μ΄ κ°λ₯ν©λλ€.
λνμ μΈ κ³ μ°¨ν¨μμΈ map, filter, reduce λ±μ λλ²μ§Έ νλΌλ―Έν°μ '+', '-' μ κ°μ μ°μ°μλ§ μ λ¬ν μ μλ μ΄μ λ μ°μ°μλ ν¨μμ΄κΈ° λλ¬Έμ λλ€.
λ!
'iOS > π Swift' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Swift] - Deinitialization (0) 2021.04.20 [Swift] CaseIterable μ΄λ? (0) 2021.03.29 [Swift] Dictionary κ°λ¨ μ 리 (0) 2021.03.16 [Swift] Enumeration μ΄μ 리 (0) 2021.03.10 [Swift] - Autoclosuresλ? (0) 2021.03.02