何时应在.exs文件中使用defmodule

问题描述 投票:1回答:1

我尝试创建一个没有config.exs的混合项目,所以我创建了文件。

我从一个凤凰项目中引用了config.exs

我看到config.exs没有模块定义。我尝试在.ex文件中声明一个独立函数,它按预期引发了错误

** (ArgumentError) cannot invoke def/2 outside module

然后我假设.exs可以不带defmodule而被写入,然后我看到mix.exs具有模块定义。为什么会这样呢?

我的问题,为什么config.exs不用模块定义,而mix.exs带有定义?

何时在.exs中使用defmodule,何时不使用?

elixir mix
1个回答
0
投票

config.exs没有模块定义,但是您可以注意到它具有:

use Mix.Config

如果您从混合中查看config.ex的源代码,您会注意到:

defmodule Mix.Config do

以及使用宏的定义:

use宏通常用作扩展点。这意味着那,当您使用模块FooBar时,您允许该模块注入当前模块中的任何代码,例如导入自身或其他模块,定义新功能,设置模块状态等]

基本上,您将模块插入脚本并使用自定义配置设置修改内容,因此config.exs的模块为Mix.Config

© www.soinside.com 2019 - 2024. All rights reserved.