有没有办法可以在 Elixir 中返回函数定义

Hac*_*ing 6 elixir

给我一个模块:

defmodule Foo do
  def bar(baz) do
    IO.puts baz
  end
end
Run Code Online (Sandbox Code Playgroud)

有什么方法可以让我回来:

def bar(baz) do
  IO.puts baz
end
Run Code Online (Sandbox Code Playgroud)

我已经发现我可以加载模块的整个定义:

Foo.__info__(:compile) |> List.last |> elem(1) |> File.read |> elem(1)
Run Code Online (Sandbox Code Playgroud)

但理想情况下,我很乐意做类似的事情

Foo.bar/1.__definition__
#=> def bar(baz) do\n  IO.puts baz\nend\d
Run Code Online (Sandbox Code Playgroud)

Sco*_*son 3

Elixir 是一种编译语言。在运行时,源代码不再存在,它已被编译为 BEAM 字节代码。运行时没有函数的源代码级表示可供代码检查或检索。