Uma 소개 패턴 매칭

소개



따라서 Elixir 프로그램의 언어를 사용할 수 없습니다!

, .

우리는 카페와 vamos lá에서 패턴 매칭을 준비하기 위해 Elixir를 '코어'로 간주합니다!



패턴 매칭



처음 시작하면 ok? Na maior parte das linguagens de programação o sinal de igual (=) é usado como um operator de atribuição, ou seja, eu atribuo um valor a uma determinada variável, no Elixir isso não se aplica!

No elixir o sinal de igual é um operator de compatibleência ('매치 연산자').
Vamos dar uma olhada no exemplo abaixo:

x = 1    # 1
1 = x    # 1
2 = x    **(MatchError) no match of right hand side value: 1


Vamos entender o que esta acontecendo, na linha 1 estamos통신 o valor 1 a uma variável x, dando um match!

Na linha 2 estamos 통신 o valor 1 a uma variável que possui valor 1, deu match com certeza!

Na linha 3 estamos는 valor 2 a variável x que possui valor 1, e isso nitidamente não da match, é exatamente isso que o log esta nos informando!

No Pattern Matching o lado direito deve ser 기자 ao lado esquerdo. 자바스크립트를 사용하면 comDestrutcing에서 패턴 일치에 대해 자세히 알아볼 수 있습니다. Na verdade, são coisas diferentes, mas através do Pattern Matching conseguimos fazer destruct no Elixir, vamos dar uma olhada neste outro exemplo:

[1, x, 3] = [1, 2, 3]
# [1, x, 3] = [1, 2, 3]

x
# 2


No exemplo anterior estamos는 variável x o segundo valor da lista a direita, também poderíamos fazer o seguinte:

[y, x, 3] = [1, 2, 3]
# [y, x, 3] = [1, 2, 3]

y
# 1

x
# 2


Lembrando que os dois lados devem ser 특파원, nos exemplos abaixo temos o mesmo erro que vimos la atrás:

[y, x, 3] = [1, 2, 3, 4]
** (MatchError) no match of right hand side value: [1, 2, 3, 4]

[y, x, 3] = [1, 2]
** (MatchError) no match of right hand side value: [1, 2]


더 많은 패턴 매칭 예제



No caso do map não precisamos referenciar todos os valores dos dois lados justamente porque no map não importa a ordem dos elementos, portanto podemos 통신원 somente a chave que precisamos do valor.

%{school: school_name} = %{school: "Trybe", country: "BR"}
# %{school: "Trybe", country: "BR"}

school_name
# "Trybe"


Para concluir veja no próximo exemplo como usamos Pattern Matching para controle de fluxo em uma função de cláusula múltipla.

control_function = fn
    {:ok, response} -> "Great: #{response}"
    {:error, response} -> "Error: #{response}"
end


control_function.({:ok, "register concluded"})
# "Great: register concluded"

control_function.({:error, "Disconnected"})
# "Error: Disconnected"


Ao receber o argumento da função o Elixir faz a comparação com a cláusula, caso "dê match"ele envia o retorno esperado, senão envia uma exceção, por exemplo:

control_function.(5)

**(FunctionClauseError) no function clause matching in :erl_eval."-inside-an-interpreted-fun-"/1


결론



Vimos então como o Pattern Matching é poderoso e, porque ele faz parte do core do Elixir, no próximo artigo falaremos sobre funções built in e como usamos no nosso dia a dia, até lá!

좋은 웹페이지 즐겨찾기