Elixir: 키워드 목록을 지도로 변환하는 방법은?
Poison JSON 파서가 검증 오류 목록을 JSON 형식으로 올바르게 출력할 수 있도록 맵으로 변환하는Ecto 변경 세트오류 키워드 목록이 있습니다.
다음과 같은 에러 리스트가 표시됩니다.
[:topic_id, "can't be blank", :created_by, "can't be blank"]
...그리고 다음과 같은 에러 맵을 입수하고 싶습니다.
%{topic_id: "can't be blank", created_by: "can't be blank"}
또는 문자열 목록으로 변환할 수 있다면 그것도 사용할 수 있습니다.
이러한 작업 중 하나를 수행하는 가장 좋은 방법은 무엇입니까?
여기에 있는 것은 키워드 리스트가 아니라 키를 나타내는 홀수 요소와 값을 나타내는 짝수 요소가 모두 포함된 목록입니다.
차이점은 다음과 같습니다.
[:topic_id, "can't be blank", :created_by, "can't be blank"] # List
[topic_id: "can't be blank", created_by: "can't be blank"] # Keyword List
Enum.into/2를 사용하여 키워드 목록을 맵으로 변환할 수 있습니다.
Enum.into([topic_id: "can't be blank", created_by: "can't be blank"], %{})
데이터 구조는 목록이므로 Enum.chunk_every/2 및 Enum.reduce/3를 사용하여 변환할 수 있습니다.
[:topic_id, "can't be blank", :created_by, "can't be blank"]
|> Enum.chunk_every(2)
|> Enum.reduce(%{}, fn ([key, val], acc) -> Map.put(acc, key, val) end)
키워드 리스트에 대한 자세한 내용은http://http://elixir-lang.org/getting-started/maps-and-dicts.html 를 참조해 주세요.
이를 위한 또 다른 방법은 다음과 같이 결합하는 것입니다.Enum.chunk/2와 함께Enum.into/3. 예:
[:topic_id, "can't be blank", :created_by, "can't be blank"]
|> Enum.chunk(2)
|> Enum.into(%{}, fn [key, val] -> {key, val} end)
또 다른 방법은 목록 이해를 사용하는 것입니다.
iex> list = [:topic_id, "can't be blank", :created_by, "can't be blank"]
iex> map = for [key, val] <- Enum.chunk(list, 2), into: %{}, do: {key, val}
%{created_by: "can't be blank", topic_id: "can't be blank"}
또한 목록을 키워드 목록으로 변환할 수 있습니다.
iex> klist = for [key, val] <- Enum.chunk(list, 2), do: {key, val}
[topic_id: "can't be blank", created_by: "can't be blank"]
경우에 따라서는 도움이 될 수도 있습니다.
이 사용 사례에 대한 자세한 내용은 http://elixir-lang.org/getting-started/comprehensions.html#results-other-than-lists를 참조하십시오.
언급URL : https://stackoverflow.com/questions/31549555/elixir-how-to-convert-a-keyword-list-to-a-map
'source' 카테고리의 다른 글
| Swift를 React-Native로 브리징할 때 "인식된 Objective-C 메서드가 아닙니다"가 표시됨 (0) | 2023.03.23 |
|---|---|
| Woocommerce REST API 확장 주문 응답 (0) | 2023.03.23 |
| 각각 angularjs로 된 jquery의 대체 방법은 무엇입니까? (0) | 2023.03.23 |
| AJAX가 브라우저 로드 표시기를 트리거하도록 하는 방법 (0) | 2023.03.23 |
| angularjs - ng-repeat : JSON 어레이 오브젝트로부터의 액세스키와 값 (0) | 2023.03.23 |