我想动态构建一个原子列表,它们可以没有或者有不同的后缀,例如:
fields = [:title#{suffix}, :body#{suffix}]
Run Code Online (Sandbox Code Playgroud)
有没有印记(或其他简单方法)?
或者这里的宏是否足够简单?
是的,有一个创造原子的印记
~w(foo)a => :foo
Run Code Online (Sandbox Code Playgroud)
您可以在符号内使用插值来动态创建原子:
~w(title#{suffix} body#{suffix})a
Run Code Online (Sandbox Code Playgroud)
你可以通过:在字符串前加一个字符串来完成这个,字符串里面可以包含插值:
iex(1)> suffix = "_foo"
"_foo"
iex(2)> fields = [:"title#{suffix}", :"body#{suffix}"]
[:title_foo, :body_foo]
Run Code Online (Sandbox Code Playgroud)