我看过以这种方式命名的elixir模块:
defmodule Foo.bar.baz do
end
Run Code Online (Sandbox Code Playgroud)
但我找不到任何文件说明何时这样做.
它与子目录有关吗?使用mix,我可以将我的模块放在lib文件夹中的子目录中,并且它们在没有点的情况下工作正常.
例如:
# this is in /lib/foo/bar
defmodule Bar do
end
Run Code Online (Sandbox Code Playgroud)
惯例是什么?
没什么特别的..你可以给模块任何你想要的名称,只要它是一个有效的原子,包括例如空格:
iex(1)> defmodule :"hello world!!!" do
...(1)> def hi, do: :ok
...(1)> end
iex(2)> :"hello world!!!".hi
:ok
Run Code Online (Sandbox Code Playgroud)
您也不需要将模块命名为与它们所在的文件/文件夹相同.您可以在任何.ex文件中定义任何模块lib,它们将可用于整个应用程序和iex.
如果文件在顶层声明单个模块,则约定是基于其路径命名,排除lib,将每个路径段转换为大写情况.例如,lib/foo/bar/baz.ex通常定义一个名为的模块Foo.Bar.Baz.
| 归档时间: |
|
| 查看次数: |
373 次 |
| 最近记录: |