Elixir更新嵌套关键字列表
是否可以更新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
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_端点或更改现有值的想法根本行不通。:)