Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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

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
当通过多个方法传递时,Elixir列表不会更新 def创建(连接,参数)do 康涅狄格州 |>呈现json响应(大容量转换器(参数)) 终止 def bulk_转换器(%%{“文件”=>%Plug.Upload{content_type:“text/csv”,文件名:basename, 路径:fullpath})do 列表=[~w(旧、新)] 完整路径 |>读取csv(列表) |>表格(u)回应 终止 def read_csv(路径、列表)do 如果路径>File.stream!|>Enum.count File.stream! |>Parser.parse_流 |>Stream.map(fn[arg]->%{url:arg}end) |>迭代URL(列表) 其他的 %{错误:%{消息:“超出限制”} 终止 终止 def迭代URL(映射的URL流,列表)执行 映射流 |>枚举每个(fn(url)->url\u转换器(url,列表)结束) %{响应:%{消息:“请求已启动”} 终止 def url_转换器(%{url:val},list)do 使用{:确定,%Route{}=Route}val})do 路线 |>App.redirect\u url |>将_添加到_列表(路线、列表) 终止 终止 def add_to_list(新的_url,%{url:original_url},list)do list=list.insert_at(list,-1,~w(#{original_url},#{new_url})) 列表 终止_List_Elixir_Phoenix Framework - Fatal编程技术网

当通过多个方法传递时,Elixir列表不会更新 def创建(连接,参数)do 康涅狄格州 |>呈现json响应(大容量转换器(参数)) 终止 def bulk_转换器(%%{“文件”=>%Plug.Upload{content_type:“text/csv”,文件名:basename, 路径:fullpath})do 列表=[~w(旧、新)] 完整路径 |>读取csv(列表) |>表格(u)回应 终止 def read_csv(路径、列表)do 如果路径>File.stream!|>Enum.count File.stream! |>Parser.parse_流 |>Stream.map(fn[arg]->%{url:arg}end) |>迭代URL(列表) 其他的 %{错误:%{消息:“超出限制”} 终止 终止 def迭代URL(映射的URL流,列表)执行 映射流 |>枚举每个(fn(url)->url\u转换器(url,列表)结束) %{响应:%{消息:“请求已启动”} 终止 def url_转换器(%{url:val},list)do 使用{:确定,%Route{}=Route}val})do 路线 |>App.redirect\u url |>将_添加到_列表(路线、列表) 终止 终止 def add_to_list(新的_url,%{url:original_url},list)do list=list.insert_at(list,-1,~w(#{original_url},#{new_url})) 列表 终止

当通过多个方法传递时,Elixir列表不会更新 def创建(连接,参数)do 康涅狄格州 |>呈现json响应(大容量转换器(参数)) 终止 def bulk_转换器(%%{“文件”=>%Plug.Upload{content_type:“text/csv”,文件名:basename, 路径:fullpath})do 列表=[~w(旧、新)] 完整路径 |>读取csv(列表) |>表格(u)回应 终止 def read_csv(路径、列表)do 如果路径>File.stream!|>Enum.count File.stream! |>Parser.parse_流 |>Stream.map(fn[arg]->%{url:arg}end) |>迭代URL(列表) 其他的 %{错误:%{消息:“超出限制”} 终止 终止 def迭代URL(映射的URL流,列表)执行 映射流 |>枚举每个(fn(url)->url\u转换器(url,列表)结束) %{响应:%{消息:“请求已启动”} 终止 def url_转换器(%{url:val},list)do 使用{:确定,%Route{}=Route}val})do 路线 |>App.redirect\u url |>将_添加到_列表(路线、列表) 终止 终止 def add_to_list(新的_url,%{url:original_url},list)do list=list.insert_at(list,-1,~w(#{original_url},#{new_url})) 列表 终止,list,elixir,phoenix-framework,List,Elixir,Phoenix Framework,每当我尝试使用IO在某处打印列表内容时,列表内容都不会更新。inspect将显示初始列表。 我正在尝试根据从csv解析的数据更新列表的内容,我正在使用灵巧的csv elixir库解析csv 如果我试着在里面打印列表 将\添加到\列表中 在我最初添加的标题和CSV中的最后一行中,只有两行可见 这里有什么我做错的吗 在add_to_list函数中创建一个新的列表,该函数返回新的列表,但忽略它。数据结构在Elixir中是不变的。检查这个答案:当我知道elixir中的DS是不可变的时,我可以通过对下面的

每当我尝试使用IO在某处打印列表内容时,列表内容都不会更新。inspect将显示初始列表。 我正在尝试根据从csv解析的数据更新列表的内容,我正在使用灵巧的csv elixir库解析csv

如果我试着在里面打印列表

将\添加到\列表中

在我最初添加的标题和CSV中的最后一行中,只有两行可见


这里有什么我做错的吗

add_to_list
函数中创建一个新的
列表
,该函数返回新的
列表
,但忽略它。数据结构在Elixir中是不变的。检查这个答案:

当我知道elixir中的DS是不可变的时,我可以通过对下面的函数做一个小的更改来解决上面的问题

def create(conn, params) do
  conn 
    |> render_json_response(bulk_convertor(params))
end

def bulk_convertor(%{"file" => %Plug.Upload{content_type: "text/csv", filename: basename, 
      path: fullpath}}) do
   list = [~w(old, new)]
   fullpath
     |> read_csv(list)
     |> form_response
end

def read_csv(path, list) do
  if path |> File.stream! |> Enum.count <= 50 do
    path
      |> File.stream!
      |> Parser.parse_stream
      |> Stream.map(fn [arg] -> %{url: arg} end)
      |> iterate_urls(list)
  else
    %{error: %{message: "Limit Exceeded"}}
  end
end

def iterate_urls(mapped_stream, list) do
  mapped_stream
    |> Enum.each(fn(url) -> url_convertor(url, list) end)
  %{response: %{message: "Request Initiated"}}
end

def url_convertor(%{url: val}, list) do
  with {:ok, %Route{} = route} <- App.create_route(%{"url" => val}) do
    route
      |> App.redirect_url
      |> add_to_list(route, list)
  end
end

def add_to_list(new_url, %{url: original_url}, list) do
  list = List.insert_at(list, -1, ~w(#{original_url}, #{new_url}))
  list
end
现在这条线的其余部分保持不变

枚举平面映射(fn(url)->url转换器(url)结束)


我想要的返回列表。

谢谢“数据结构在长生不老药中是不可变的”。你应该将@fhdhsni给出的答案标记为正确,而不是张贴你自己的字面意思相同的帖子。是的,我写了@AlekseiMatiushkin。你能告诉我-1的原因吗?堆栈溢出是一个知识库,不是解决问题的工具。答案应该对未来的读者有价值;这个问题的标题会把人们带到这里来寻找标题中所述的问题,而公认的答案提供了所需的所有信息。在这种情况下,您的特定问题的解决方案没有任何意义,因此我推动您删除您的答案。我没有将其作为@fhdhsni链接的问题的副本关闭,因为这里是一个列表,有一个地图,但也许我应该。
def iterate_urls(mapped_stream) do
  mapped_stream
    |> Enum.flat_map(fn(url) -> url_convertor(url) end)
    |> dump_to_csv
  %{response: %{message: "Request Initiated"}}
end