如何将__MODULE__
与字符串连接起来?
temp = __MODULE__
<> " /布拉布拉"不起作用
如果__MODULE__
是Elixir.Tasks.Process.Lixo而不是我需要temp var
" Elixir.Tasks.Process.Lixo /布拉布拉"
答案 0 :(得分:4)
__MODULE__
只是引用您当前的模块。它返回一个原子,不能与字符串连接。为此,您需要将其转换为to_string/1的字符串:
to_string(Elixir.Tasks.Process.Lixo) <> "/foo"
# => "Elixir.Tasks.Process.Lixo/foo"
您还可以使用隐式调用to_string/1
的字符串插值:
"#{Elixir.Tasks.Process.Lixo}/foo"
# => "Elixir.Tasks.Process.Lixo/foo"
答案 1 :(得分:1)
您可以使用Module.concat
。例如:
Module.concat(Foo.Bar, Baz) # => Foo.Bar.Baz
Module.concat([Foo, Bar, Baz]) # => Foo.Bar.Baz
Module.concat(__MODULE__, Baz) # => Foo.Bar.Baz if current module is Foo.Bar
这样做可以使它像你期望的那样保持原子,避免转换成二进制和后退等。