在 Elixir 中,可以使用 @moduledoc
和 @doc
声明模块和函数的文档注释,这些注释可以在编译时被提取并生成文档。如果需要在编译时执行某些函数,可以在模块中定义 defmodule
、def
、defp
等函数之外的代码,这些代码将在编译时执行。
例如,在模块中定义一个 version/0
函数,用于返回当前程序的版本信息。在编译时,可以通过调用该函数来获取版本信息,并将其写入程序的输出文件中。代码示例如下:
defmodule MyModule do
@vsn "1.0.0"
def version do
@vsn
end
# 编译时执行的代码
IO.puts("Version: #{version()}")
end
这段代码中,IO.puts/1
函数调用将在编译时执行,并输出程序的版本信息。注意,编译时执行的代码应该尽量简单,避免对模块的影响,以免引起问题。