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

给我一个模块:

defmodule Foo do
  def bar(baz) do
    IO.puts baz
  end
end

有什么方法可以回复:

def bar(baz) do
  IO.puts baz
end

我已经知道我可以加载模块的整个定义:

Foo.__info__(:compile) |> List.last |> elem(1) |> File.read |> elem(1)

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

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

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

点赞