给我一个模块:
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
答案 0 :(得分:1)
Elixir是一种编译语言。在运行时,源代码不再存在,它已被编译为BEAM字节代码。在运行时,函数没有源级表示,供您检查或检索代码。