Elixir的Ruby的__method__相当于什么?

时间:2016-11-25 04:58:49

标签: elixir

如何做以下事情:

rec = fn ->
  receive do
  after
     1000 -> __function__
  end
end

rec.()

函数指向当前函数,类似于Ruby中的方法将符号返回给当前方法。

1 个答案:

答案 0 :(得分:0)

Sidenote :查询当前函数名称应该没有任何理由。在Ruby中我们有__callee__,这对于区分别名很方便,除非在2.3中被破坏,__method__本身没有多大意义。

无论如何,可以使用:erlang.process_info/2

{:current_function, {module, function, arity}} = \
      :erlang.process_info(:erlang.self(), :current_function)

示例:

defmodule A, do: def a, do: :erlang.process_info(:erlang.self(), :current_function)
A.a
#⇒ {:current_function, {A, :a, 0}}