Elixir-지도
키워드 목록은 목록에 저장된 콘텐츠를 키로 처리하는 편리한 방법이지만 그 아래에서 Elixir는 여전히 목록을 살펴보고 있습니다. 목록을 모두 살펴 봐야하는 다른 계획이있는 경우 적합 할 수 있지만 데이터에 대한 유일한 접근 방식으로 키를 사용하려는 경우 불필요한 오버 헤드가 될 수 있습니다.
여기에서지도가 구출됩니다. 키-값 저장소가 필요할 때마다 맵은 Elixir의 "이동"데이터 구조입니다.
지도 만들기
맵은 % {} 구문을 사용하여 생성됩니다-
map = %{:a => 1, 2 => :b}
키워드 목록과 비교하면 이미 두 가지 차이점을 볼 수 있습니다.
- 맵은 모든 값을 키로 허용합니다.
- 지도의 키는 순서를 따르지 않습니다.
키에 액세스
키와 관련된 값에 액세스하기 위해지도는 키워드 목록과 동일한 구문을 사용합니다.
map = %{:a => 1, 2 => :b}
IO.puts(map[:a])
IO.puts(map[2])
위의 프로그램이 실행되면 다음과 같은 결과가 생성됩니다.
1
b
키 삽입
지도에 키를 삽입하려면 Dict.put_new 지도, 새 키 및 새 값을 인수로 취하는 함수-
map = %{:a => 1, 2 => :b}
new_map = Dict.put_new(map, :new_val, "value")
IO.puts(new_map[:new_val])
키-값 쌍이 삽입됩니다. :new_val - "value"새지도에서. 위의 프로그램이 실행되면 다음과 같은 결과가 생성됩니다.
"value"
값 업데이트
맵에 이미있는 값을 업데이트하려면 다음 구문을 사용할 수 있습니다.
map = %{:a => 1, 2 => :b}
new_map = %{ map | a: 25}
IO.puts(new_map[:a])
위의 프로그램이 실행되면 다음과 같은 결과가 생성됩니다.
25
패턴 매칭
키워드 목록과 달리 맵은 패턴 일치에 매우 유용합니다. 맵이 패턴에 사용되면 항상 주어진 값의 하위 집합에서 일치합니다.
%{:a => a} = %{:a => 1, 2 => :b}
IO.puts(a)
위의 프로그램은 다음 결과를 생성합니다-
1
이것은 일치합니다 a 와 1. 따라서 출력을 다음과 같이 생성합니다.1.
위에 표시된대로 패턴의 키가 지정된 맵에 존재하는 한 맵이 일치합니다. 따라서 빈지도는 모든지도와 일치합니다.
맵 키에 액세스, 일치 및 추가 할 때 변수를 사용할 수 있습니다.
n = 1
map = %{n => :one}
%{^n => :one} = %{1 => :one, 2 => :two, 3 => :three}
Map 모듈 은 지도 를 조작하는 편리한 기능을 가진 키워드 모듈과 매우 유사한 API를 제공합니다. 다음과 같은 기능을 사용할 수 있습니다.Map.get, Map.delete,지도를 조작합니다.
Atom 키가있는 맵
지도에는 몇 가지 흥미로운 속성이 있습니다. 맵의 모든 키가 원자 일 때 편의를 위해 키워드 구문을 사용할 수 있습니다.
map = %{:a => 1, 2 => :b}
IO.puts(map.a)
맵의 또 다른 흥미로운 속성은 아톰 키를 업데이트하고 액세스하기위한 자체 구문을 제공한다는 것입니다.
map = %{:a => 1, 2 => :b}
IO.puts(map.a)
위의 프로그램은 다음 결과를 생성합니다-
1
이런 식으로 아톰 키에 액세스하려면 해당 키가 있어야합니다. 그렇지 않으면 프로그램이 작동하지 않습니다.