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

Сопоставление (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

Site Footer

Sliding Sidebar

About Me

About Me

For whom this blog for?

For those who are interested in modern Internet technologies, IT business, startups, management, quality control, personal effectiveness, motivation. Here I write about what is interesting, about problems I faced and solutions I found. I hope it will be interesting to you either.

What motivates me to write?

The desire to improve, to study deeper topics that interest me. Find people with similar problems and tasks, together look for ways out and solutions.

Feel free to contact if you have anything to say to me

Old Flash site with my artistic works and misuc.