我想动态构建一个原子列表,这些原子列表可以没有或者有不同的后缀,例如:
fields = [:title#{suffix}, :body#{suffix}]
是否有印记(或其他简单方法)?
或者这里的宏是否足够简单?
答案 0 :(得分:7)
是的,有创建原子的印记
~w(foo)a => :foo
你可以在sigils中使用插值来动态创建原子:
~w(title#{suffix} body#{suffix})a
答案 1 :(得分:5)
你可以通过在字符串前放一个dishId
来实现这一点,字符串里面可以包含插值:
:
答案 2 :(得分:2)
为了方法的完整性,我会把它放在这里:String.to_atom/1
也可以工作:
~w|title body|
|> Enum.map(& "#{&1}_foo")
|> Enum.map(&String.to_atom/1)
#⇒ [:title_foo, :body_foo]