如何在Elixir中展平字符串映射图?

时间:2016-08-06 05:21:15

标签: elixir flatten

category_urls = [
  "https://thepiratebay.org/browse/100/0/3",
  "https://thepiratebay.org/browse/200/0/3",
  "https://thepiratebay.org/browse/300/0/3",
  "https://thepiratebay.org/browse/400/0/3",
  "https://thepiratebay.org/browse/500/0/3",
  "https://thepiratebay.org/browse/600/0/3"
]
result = 
  category_urls
  |> Enum.map(fn category_url ->
    1..50
    |> Enum.map(fn i -> String.replace(category_url, "/0/", "/#{i}/") end)
  end)

我正在尝试生成一个我需要抓取的网址。

上面的代码为我生成了一个字符串映射图。我想把它压平成一个简单的字符串图。

我如何在Elixir中实现这一目标?

1 个答案:

答案 0 :(得分:2)

使用Enum.flat_map/2

category_urls = [
  "https://thepiratebay.org/browse/100/0/3",
  "https://thepiratebay.org/browse/200/0/3",
  "https://thepiratebay.org/browse/300/0/3",
  "https://thepiratebay.org/browse/400/0/3",
  "https://thepiratebay.org/browse/500/0/3",
  "https://thepiratebay.org/browse/600/0/3"
]
result = 
  category_urls
  |> Enum.flat_map(fn category_url ->
    1..50
    |> Enum.map(fn i -> String.replace(category_url, "/0/", "/#{i}/") end)
  end)
  end

但是,使用comprehension可以使代码更简单。

for i <- 1..6, j <- 1..50, do: "https://thepiratebay.org/browse/#{i}00/#{j}/3"