【发布时间】:2015-10-23 16:24:13
【问题描述】:
我搜索了 Elixir 和 Phoenix 文档,以及其他一些网站,例如 Learn Elixir,但没有成功。这是它的样子:
defp update_positions(item_ids) do
item_ids = String.split(item_ids, ",")
|> Enum.map fn item_id -> String.to_integer(item_id) end
items = Repo.all(Item |> where([item], item.id in array(^item_ids, :integer)))
item_hash = Enum.reduce items, %{}, fn item, map -> Map.put(map, item.id, item) end
item_ids
|> Stream.with_index
|> Enum.each fn {item_id, index} ->
item = item_hash[item_id]
Repo.update(%{item | position: index + 1})
end
end
起初我以为它只是一个续行符号,以保持代码的可读性,但上面的 Item |> where 行表明并非如此。是列表推导还是指定输入类型的东西?
【问题讨论】:
-
这里也有一些关于管道的讨论:elixir-lang.org/getting-started/mix-otp/…
-
由于某种原因,互联网搜索“|>”只是不解析出来,我猜。
标签: elixir