VesselWheel

Pattern Matching 연산자 overloading 본문

Xcode Study

Pattern Matching 연산자 overloading

JasonYang 2023. 5. 2. 08:32

import UIKit

 

// Expression Pattern

 

let num = 11

 

switch num{

    // interval matching

    // ... : 범위 연산자

case 0...10:

    print("0 ~ 10")

default:

    break

}

 

// Pattern Matching Operator

 

 

struct Size{

    var width = 0.0

    var height = 0.0

    

    // Pattern Matching 연산자 overloading하기

    // parameter 의 자료형과 순서를 맞추어 줌

    static func ~=(left: Range<Int>, right:Size) -> Bool{

        // 1..<9 ~= size1:

        return left.contains(Int(right.width))

    }

}

let size1 = Size(width:10, height: 20)

 

switch size1{

    // 구조체는 interval mathing 을 할 수 없음

    // Pattern Matching 연산자 overloading 해야 함

case 1..<9:

    print("1 ~ 8")

    // 구조체는 interval mathing 을 할 수 없음

    // Pattern Matching 연산자 overloading 해야 함

case 10..<99:

    print("10 ~ 98")

default:

    break

}