有没有办法在没有宏的情况下动态构建原子名称?

时间:2017-07-22 08:31:41

标签: elixir

我想动态构建一个原子列表,这些原子列表可以没有或者有不同的后缀,例如:

fields = [:title#{suffix}, :body#{suffix}]

是否有印记(或其他简单方法)?
或者这里的宏是否足够简单?

3 个答案:

答案 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]
相关问题