遍历字典中的值
Looping through values in dict
如何循环字典中的键值对并获取每个项目的值?我想到了这个,但我不断收到错误...
defp processValues (ticket) do
IO.inspect ticket.value # this doesnt work
end
Repo.all(Ticket) #get all tickets
|> Enum.group_by(&(&1.aggregate_id)) # group by id
|> Dict.to_list # maybe not needed?
|> Enum.map(&(processValues(&1))) # return processed tickets
看看this documentation。我会特别提请您注意文档的这一部分:
iex> for {key, val} <- %{"a" => 1, "b" => 2}, into: %{}, do: {key, val * val}
%{"a" => 1, "b" => 4}
你想要类似于
的东西
for {key, value} <- ticket, do: process_values(value) # Note snake case.
另请注意,大写 "T" 是错误的。它需要小写"t"。我的意思是在你的例子中它应该是 Repo.all(ticket)
而不是 Repo.all(Ticket)
但老实说,很难说出您要做什么。如果您有更具体的问题,请编辑,我们将看看是否可以为您提供更具体的答案。
要指定已在模块中定义的映射函数,您需要使用语法 &ModuleName.function_name/arity
。在您的情况下,它将是 &processValues/1
.
下面是一个演示该概念的简化示例:
list = [%{aggregate_id: 1, value: "test"}, %{aggregate_id: 2, value: "test2"}]
defmodule T do
defp processValues(ticket) do
IO.inspect ticket.value
end
def process_list(list) do
list |> Enum.map(&processValues/1)
end
end
T.process_list list
如何循环字典中的键值对并获取每个项目的值?我想到了这个,但我不断收到错误...
defp processValues (ticket) do
IO.inspect ticket.value # this doesnt work
end
Repo.all(Ticket) #get all tickets
|> Enum.group_by(&(&1.aggregate_id)) # group by id
|> Dict.to_list # maybe not needed?
|> Enum.map(&(processValues(&1))) # return processed tickets
看看this documentation。我会特别提请您注意文档的这一部分:
iex> for {key, val} <- %{"a" => 1, "b" => 2}, into: %{}, do: {key, val * val}
%{"a" => 1, "b" => 4}
你想要类似于
的东西for {key, value} <- ticket, do: process_values(value) # Note snake case.
另请注意,大写 "T" 是错误的。它需要小写"t"。我的意思是在你的例子中它应该是 Repo.all(ticket)
而不是 Repo.all(Ticket)
但老实说,很难说出您要做什么。如果您有更具体的问题,请编辑,我们将看看是否可以为您提供更具体的答案。
要指定已在模块中定义的映射函数,您需要使用语法 &ModuleName.function_name/arity
。在您的情况下,它将是 &processValues/1
.
下面是一个演示该概念的简化示例:
list = [%{aggregate_id: 1, value: "test"}, %{aggregate_id: 2, value: "test2"}]
defmodule T do
defp processValues(ticket) do
IO.inspect ticket.value
end
def process_list(list) do
list |> Enum.map(&processValues/1)
end
end
T.process_list list