2014-05-19 1 views
1

Elixir 버전을 v0.13.2으로 업데이트했고 ListDict은 더 이상 사용되지 않습니다. Dict apis, [{"foo", :bar}]"foo"의 값을 가져오고 싶습니다. Elixir v0.13 또는 그 이전에는 Dict.get([{"foo", :bar}], "foo")을 사용하여 값을 얻었습니다. 이제는 할 수 없습니다. 그렇지 않으면 no function clause matching in Keyword.get/3이 발생하거나 List.keyfind/3 (올바른 키 - 값 쌍을 얻을 수 있음)을 사용해야합니까? 그러나 나는 어느 쪽이 편리한 방법이 아닌지 생각한다.Elixir`ListDict`는 더 이상 사용되지 않습니다. 따라서 키가 바이너리인데도 목록에서 값을 얻으려면

답변

2

당신은 아주 쉽게 HashDict에 그 목록을 변환 한 다음 평소와 같이 그것들을 조작 할 Dict API를 통해 Enum.into/2를 사용하여 할 수 있습니다

listdict = [{"foo", :bar}, {"baz", :qux}] 
listdict |> Enum.into(HashDict.new) |> Dict.get("foo") 

또한 함축을 통해이 작업을 수행 할 수 있도록 같은 :

for {k, v} <- listdict, into: HashDict.new, do: {k, v} 

또는

for keypair <- listdict, into: HashDict.new, do: keypair