Я не понимаю, что именно означает знак равенства в Эликсире. Что неясно, так это то, что это выглядит как смесь присваивания и операции сопоставления с образцом.
iex(1)> x=4
4
iex(2)> y=5
5
iex(3)> 3=y
** (MatchError) no match of right hand side value: 5
iex(3)> y=3
3
iex(4)> y=x
4
Я понимаю, что в Elixir оператор равенства означает соответствие левой части знака = правой стороне. Для меня первые две строчки имеют смысл. x и y - несвязанные переменные, поэтому они могут соответствовать чему угодно. Они связаны по мере их совпадения. Следовательно, я понимаю третью строчку. Вы не можете сопоставить 3 с 5.
Я начинаю терять голову, почему, черт возьми, две последние строки выполняются без той же ошибки. Похоже, что знак равенства снова стал оператором присваивания.
Я пытался принять такое поведение как факт без полного понимания и попытался пойти дальше в изучении языка. Но поскольку сопоставление с образцом является одним из основных механизмов Elixir, я постоянно блокируюсь и чувствую, что должен вернуться к этому исходному вопросу. Я не буду идти дальше, пока полностью не пойму, что именно происходит со знаком «=» и какова логика.