간단히 말해서 Elixir 패턴 매칭
6736 단어 elixir
간단히 말해서 패턴 매칭
Elixir를 처음 사용하는 경우 패턴 매칭이 생소할 수 있습니다. 익숙해지면 그것이 얼마나 강력한지 알게 될 것입니다. 그리고 나는 당신이 그것을 확실히 좋아할 것이라고 확신합니다.
패턴 매칭은 elixlir 코드의 모든 곳에서 사용됩니다. 그리고 나는 그것을 내가 사용하는 다른 언어로 가져올 것입니다 (가능하다면 : D)
하지만 그렇게 어렵지는 않습니다.
패턴 매칭은 무엇을 합니까?
당신에게 변수/값을 주고, 당신이 원할 수도 있습니다
그리고 패턴 매칭은 당신을 위해 이 모든 일을 합니다. 몇 가지 예를 살펴보십시오.
이 예제를 시도할 때 데이터가 패턴과 일치하지 않으면 예외가 발생합니다. 실제 Elixir 앱에서는 이런 식으로 사용하지 않을 것입니다. 이 기사의 끝에서 사용된 위치를 확인하세요.
Map/Struct와 패턴 매칭
1. 이 데이터가 지도인지 확인
%{} = params
2. 데이터가 맵이고 키
email
가 있고 이메일 값이[email protected]
인지 확인합니다.%{"email" => "[email protected]"} = params
3. 데이터가 맵이고 키
email
가 있는지 확인하고 패턴과 일치하면 키email
의 값을 변수my_email
에 할당합니다.%{"email" => my_email} = params
4. 데이터가 맵이고 키가 있는지 확인
email
, 값을 추출하고 싶지 않습니다.값을 무시하려면
_
를 사용하십시오.%{"email" => _} = params
5. 패턴 매칭 중첩 맵
%{"address" => %{"city" => city}} = params
6. 데이터가 구조체 유형인지 확인
User
%User{} = params
The rest is same with map. Struct is basically a map with atom key.
List와 패턴 매칭
1. 데이터가 비어 있는지 확인
[] = params
2. 데이터가 목록이고 비어 있지 않은지 확인
[_|_] = params
3. 데이터가 정확한 목록인지 확인
[1, 2] = params
4. 데이터가 목록인지 확인하고 첫 번째 요소와 나머지 요소 추출
[first_element | remaining] = params
튜플과 패턴 매칭
튜플과 일치시킬 패턴이 많지 않습니다.
1. 데이터가 2개 요소의 튜플인지 확인
{_, _} = params
2. 데이터가 튜플이고 특정 값이 있는지 확인
{:ok, data} = result
# you use this most of time
패턴 일치를 사용하는 위치
1. 케이스 조항
case user do
%User{is_active: true} -> "Log you in"
%User{is_active: false} -> "Check your email"
_others -> "Not a user"
end
2. 조항 포함
with {:ok, user} <- create_user(params) do
# your code
end
3. 기능
def is_admin(%User{role: "admin"}), do: true
def is_admin(%User{role: _}), do: false
def is_admin(_), do: raise "Not a user"
결론
처음에는 이해하기가 조금 낯설지만 점차 없이도 살 수 있습니다. 내가 가장 사랑하는 Elixir의 기능 중 하나입니다. 그리고 나는 당신이 할 것이라고 생각합니다. 그것을 더 많이 사용하고 그 힘은 당신의 손에 있습니다.
Reference
이 문제에 관하여(간단히 말해서 Elixir 패턴 매칭), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/onpointvn/elixir-pattern-matching-in-a-nutshell-5fef텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)