Elixirで文字列をモジュールに変換する

mixのタスクで受け取ったパラメータをモジュールに変換して何か実行したい場合とか用メモ。

"some_module"SomeModule に変換したい場合。

string = "some_module"
module = string |> Macro.camelize()
m = Module.concat([Elixir, module]) # => SomeModule

Module.concatを使えば変換してくれるけど、モジュール名がネストしていない場合は暗黙的に付加されている Elixir を先頭に指定してやれば問題ない。

上の例なら、SomeModuleがexec/0という関数を持っていれば、

m.exec()

で関数を実行できる。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.