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更新嵌套关键字列表_Elixir - Fatal编程技术网

Elixir更新嵌套关键字列表

Elixir更新嵌套关键字列表,elixir,Elixir,是否可以更新elixir中的嵌套关键字列表? 例如,我正在努力使以下工作 Keyword.put(conn.private.phoenix_endpoint.config(:url), :host, conn.host) 但是无论如何,更新的主机不会反映在conn变量中。您可以使用该变量,它将与映射和关键字列表组合使用 put_in(conn, [:private, :phoenix_endpoint, :config, :url, :host], conn.host) Edit正如@ma

是否可以更新elixir中的嵌套关键字列表? 例如,我正在努力使以下工作

Keyword.put(conn.private.phoenix_endpoint.config(:url), :host, conn.host)
但是无论如何,更新的主机不会反映在
conn
变量中。

您可以使用该变量,它将与映射和关键字列表组合使用

put_in(conn, [:private, :phoenix_endpoint, :config, :url, :host], conn.host) 

Edit正如@manukall所指出的,这在这种特殊情况下不起作用,因为
conn.private.phoenix_endpoint
返回一个模块,而不是一个地图或关键字列表。

这里的问题是,假设你在phoenix应用程序中,
conn.private.phoenix_endpoint
将返回你的端点模块。因此,您基本上是在调用
MyApp.Endpoint.config(:url)
。不能以这种方式更改函数返回值


您可能要做的是覆盖
phoenix\u端点
conn.private
键,将其指向其他模块,但我认为这不是您想要做的。

谢谢。我收到错误
未定义的函数:Plug.Conn.get\u和\u update/3
。你知道为什么会这样吗?我缺少一个库吗?你能指导如何覆盖phoenix_端点吗?也许我必须克隆并更改值?最好告诉我们您正试图解决的问题,因为您当前覆盖phoenix_端点或更改现有值的想法根本行不通。:)