Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views :

[Swift] Pattern Matching

/
/
/
89 Views

패턴매칭이란?

스위프트로 개발하면서 패턴매칭을 사용하지 않는다면 스위프트식 개발을 하고 있지 않다고 생각할 정도로 패턴매칭은 중요하다.
패턴매칭을 사용하면 코드를 단순화할 수 있고, 보다 많은 표현을 할 수 있게 된다.
패턴 매칭은 switch 문을 통해 여러가지 표현식으로 구현할 수 있다. 또한 true/false을 판단하는 if 문을 통해서도 패턴매칭을 표현할 수 있다.

Wildcard Pattern

와일드카드는 _ 표시하며, 매칭되는 값이 존재하지만 그 값을 사용하지 않을때 사용한다.


2^4에 대한 연산을 할때 for문을 이용하여 루프를 돌리지만 루프의 값이 필요없을때 와일드카드를 이용한다.

와일드카드는 옵셔널을 포함한 모든 값에 매칭할 수 있다. 옵셔널은 _? 문자를 입력하여 매칭할 수 있다.

Identifier Pattern

식별자 패턴은 고정된 값을 매칭하는 방식입니다.


Objective-C 에서 흔히 사용하는 switch문과 동일하다.

변수/상수 이름을 일반적으로 사용하며, 좌변에 대한 값을 우변에 매칭한다.

Value-Binding Pattern

let 또는 var 를 사용하여 값을 바인딩 하는 패턴이다.


case 절에서 (let x, let y) 와 let (x, y)는 같은 의미이다.

point 튜플에 대해 각각 상수 x, y 로 값을 바인딩하는 것이다.


우변의 값을 좌변에 바인딩하여 매칭한다.

where 절을 사용하여 바인딩 된 변수/상수에 대한 비교 조건을 입력할 수 있다.

Tuple Pattern

튜플 패턴은 Tuple 형태의 표시로 한번에 비교하는 방법이다.


튜플 book에 대해 4가지 패턴을 검사한다.
  1. 타이틀이 “swift”인지 검사
  2. 디스크립션이 있는지 검사하지만 그 값은 사용하지 않는다.
  3. price을 매칭
  4. other의 타입이 NSArray인지 검사하지만, 사용하지 않는다.

Enumeration Case Pattern

패턴매칭은 enum 과 만나서 보다 많은 작업을 할 수 있다.


enum case 패턴은 우변의 값이 enum 타입의 특정 case 에 해당하는지를 보는 것이다.

up 상수값이 Either 타입 .up에 해당하는지 검사한다.

Either 타입은 튜플로 된 연관값을 갖고 있기 때문에 튜플 패턴과 결합하여 사용할 수 있다.


swich 문에서도 동일한 패턴 검사를 할 수 있다.

Optional Pattern

Optional이란 ? 식별자가 붙은 변수/상수를 말한다. nil 이 아닌 옵셔널 값에 매칭한다.


(Int?, Int?) 튜플과 (Int, Int)? 튜플은 구분해서 사용해야한다.

(Int?, Int?) 튜플은 Int형 옵셔널을 값으로 가지는 튜플이고, (Int, Int)? 튜플은 Int형 값을 가지는 옵셔널 튜플이다.


for case 문으로도 옵셔널 패턴을 구현할 수 있다.

배열에서 nil 값이 아닌 것만 출력된다.

Type-Casting Pattern

타입 캐스팅 패턴은 is, as 두가지 패턴이 있다.


value의 타입이 Int 형인지 Double 형인지 구분하는 패턴이다.

as 타입의 경우 반환값이 필요치 않을 경우 와일드카드(_ as Double)를 사용하면 is 타입과 동일하다.

Expression Pattern

표현식 패턴은 ~= 연산자에 의해서 검증한 결과를 매치한다. 단순하게는 같은 값인지 확인하는 것이다.


Range는 ~= 연산자가 디폴트로 구현되어 있다.

~= 연산자를 적절히 오버로딩해주면 임의의 패턴 매칭 방법을 쓸 수 있다.
Int 타입의 값을 String 타입의 값과 매칭하려고 하면 위와 같이 연산자를 오버로딩하면 된다.

Operator Overloading 을 참고하자.

Leave a Comment

이메일은 공개되지 않습니다.

This div height required for enabling the sticky sidebar