이 장에서 살펴볼 내용은 세가지다
1. 패턴매칭으로 변수에 값 바인딩하기
2. 구조화된 데이터 패턴매칭하기
3. 매칭을 무시할 때 사용하는 언더스코어
엘릭서의 할당문
엘릭서는 할당문이 아니라 assertion으로 동작한다
등호 왼쪽을 오른쪽과 같게 만들 방법이 있다면 실행에 성공한다.
> a = 1
1
> 1 = a
1
> 2 = a
error
첫번째 줄에서 a에 1을 저장했다
두번째 줄에서 a에는 1이 저장되어 있으므로 좌변과 우변이 같아서 매칭에 성공한다
세번째 줄에서 2 = a 를 실행하면 오류가 발생한다
실행 하려는 코드는 assert(2 = 1)과 같으므로 매칭에 실패해 오류가 발생한다
---
더 복잡한 매칭
배경 지식을 위해 엘릭서의 리스트는 쉼표로 구분된 대괄호 안에 넣어서 만든다
["a", "b", "c"]
이제 매치연산자에 대한 내용으로 돌아오자
> list = [1, 2, 3]
[1, 2, 3]
매칭을 참으로 만들기 위해 list에 [1, 2, 3]이 바인딩되었다
이렇게도 해보자
> list = [1, 2, 3]
[1, 2, 3]
> [a, b, c] = list
[1, 2, 3]
> a
1
> b
2
> c
3
엘릭서는 문법규칙에 따라 좌변과 우변을 같도록 만들 방법을 찾는다
좌변은 변수 세개를 담은 리스트이고 우변은 값 세개로 이루어진 리스트이므로
각 변수마다 위치에 맞는 값을 바인딩한다
이런 과정을 패턴매칭이라고 한다
다른 예제도 살펴보자
> list = [1, 2, [3, 4, 5]]
[1, 2, [3, 4, 5]]
> [a, b, c] = list
[1, 2, [3, 4, 5]]
> a
> 1
> b
> 2
> c
> [3, 4, 5]
이번에는 매칭되지 않는경우를 보자
> list = [1, 2, 3]
> [1, 2, 3]
> [a, 1, b] = list
> error
매칭을 하지않으려면 언더스코어를 쓰면 된다
> list = [1, 2, 3]
> [1, 2, 3]
> [a, _, b] = list
> [1, 2, 3]
댓글 0