Uma 소개 패턴 매칭
8945 단어 beginnerserlangelixirfunctional
소개
따라서 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á!
Reference
이 문제에 관하여(Uma 소개 패턴 매칭), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/trybe/uma-introducao-ao-pattern-matching-2hl4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)