elixir - 将“配置变量”作为静态值的替代方法
问题描述
我正在寻找一些静态的全局值,例如,如果某个值为 nil|null 则放置此默认值,例如,如果未在分配中声明,则将默认 url 放入 eex 的链接中。
例子:
# Create a link with default return if URL not found
<%=
link "Go back",
to: assigns[:url_back] || Application.get_env(:app_name, :default_values)[:url_back]
%>
# example of in ./config/config.exs
config :app_name, :default_values,
url_back: "/index"
- 我的问题是有替代方案吗?
- 我可以为此使用模块吗?喜欢:
defmodule StaticValues do
def url_back(), do: "/index"
end
# note: I do not know how to import or use in eex...
解决方案
虽然布雷特的答案是完全正确的,但如果你想更干,可能还有另一种方法。
Map.merge/2
在渲染模板之前简单地弱化默认值。
assigns =
:app_name
|> Application.get_env(:default_values)
|> Map.new()
|> Map.merge(assigns)
推荐阅读
- angularjs - 如何像班次一样在电子中加载多个页面
- android - 未获取捕获的图像路径
- python - UnicodeDecodeError:“ascii”编解码器无法解码位置 5 中的字节 0xc3:序数不在范围内(128)
- python - 如何跟踪进程的资源使用情况?
- angular - Angular Guard 和 JWT
- c - C--程序没有正确读取文件结尾
- elasticsearch - 在 ELK 中,如何搜索与另一个不匹配的日志?
- android - 在 XML Android 字符串中需要 2 个新行吗?
- node.js - 通过 Express 向 Google Places API 发出远程请求每次都会获取重复的结果
- python - 将类实例设置为自身的嵌套属性——这在 Python 中真的合法吗