在 Elixir 中选择运行时的方法(函数指针类型)

Lah*_*iru 2 elixir

我想在运行时选择程序的例程。我在 Elixir 中找不到任何函数指针类型(或对方法的引用)。

defmodule MyModule do
    def method do
        choice()
    end
end
Run Code Online (Sandbox Code Playgroud)

我想给出一种在运行时选择的方法。这该怎么做?

Jon*_*nas 5

您可以发送一个函数作为参数,然后像这样调用该函数(使用.(... )):

iex> defmodule MyModule do
   >     def my_method(choice) do
   >         choice.("hello")
   >     end
   >  end
Run Code Online (Sandbox Code Playgroud)

然后&在模块名称之前使用它来调用它,例如:

iex> MyModule.my_method(&String.upcase/1)
"HELLO"
Run Code Online (Sandbox Code Playgroud)