Сопоставление.

Сопоставление (pattern matching)

Сопоставление или pattern matching, это еще один способ присвоения, извлечения значений из списков или кортежей. Работает это так - сравнивается две переменные, если они не эквивалентны по типу или по значению возникнет исключение (ошибка). Если они равны, но отличаются только в переменных, то переменным в левой части выражения будет присвоено соответстветствующие значения справа. Проще всего это тоже пояснить на примере. Напомню, переменные всегда начинаются с заглавной:

1> {A, B} = {111, 222}.
{111,222}
2> A.
111
3> B.
222
4> [Head|Tail] = [1,2,3,4,5].
[1,2,3,4,5]
5> Head.
1
6> Tail.
[2,3,4,5]
7> {1,2,X} = {1,2,3}.
{1,2,3}
8> X.
3

А вот несколько примеров сопоставления которые не будут работать:

1> [A] = [1,2].
** exception error: no match of right hand side value [1,2]
2> {A, B} = [1,2].
** exception error: no match of right hand side value [1,2]
3> [A, 1] = [1, 2].
** exception error: no match of right hand side value [1,2]
4> 

Знак подчеркивания можно использовать для игнорирования значений в левой части выражения:

1> {A, B, _} = {1, 2, 3}.
{1,2,3}
2> {1, 2, C, _} = {A, B, 3, 4}.
{1,2,3,4}
3> C.
3
4> B.
2
5> A.
1

Comments

comments


Bookmark and Share