Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Enums 使用Elixir pipeine和Enum将数据放入列表中_Enums_Elixir_Pipeline - Fatal编程技术网

Enums 使用Elixir pipeine和Enum将数据放入列表中

Enums 使用Elixir pipeine和Enum将数据放入列表中,enums,elixir,pipeline,Enums,Elixir,Pipeline,下午好。我有一个模块从链接中获取域名 defmodule URIparser do defstruct domains: [] def make_domain(uri) do case URI.parse(uri) do %URI{authority: nil} -> URI.parse("http://#{uri}") %URI{authority: _} -> URI.parse(uri) end end end 之后,我使用

下午好。我有一个模块从链接中获取域名

defmodule URIparser do
  defstruct domains: []
  def make_domain(uri) do
    case URI.parse(uri) do
      %URI{authority: nil} -> URI.parse("http://#{uri}")
      %URI{authority: _} -> URI.parse(uri)
    end
  end
end
之后,我使用管道并获得我需要的域

links = ["https://www.google.com/search?newwindow=1&sxsrf", "https://stackoverflow.com/questions/ask", "yahoo.com"]
Enum.each(links, fn(x) -> URIparser.make_domain(x) |> Map.take([:authority]) |> Map.values |> IO.inspect end)
这就是最终发生的事情:

["google.com"]
["stackoverflow.com"]
["yahoo.com"]
:ok
请告诉我们如何补充管道并将所有域放入一个列表中。还提供了其他解决方案

例如:

%{domains: ["google.com", "stackoverflow.com", "yahoo.com"]}

不要使用
Enum.each
Map.take
,而是使用
Enum.Map
Map.get

Enum.map(links, fn x ->
  x
  |> URIparser.make_domain()
  |> Map.get(:authority)
end)

非常感谢,卡比