说我有一堆如下代码:
def dirs(path, regex_dir \\ ".+") do
path
|> normalize_path
|> do_dirs([], regex_dir)
end
# list of bitstrings
defp normalize_path([path | rest]) when is_bitstring(path) do
[path | normalize_path(rest)]
end
# list of character lists
defp normalize_path([path | rest]) when is_list(path) do
[to_string(path) | normalize_path(rest)]
end
defp normalize_path([]) do
[]
end
# bitstring
defp normalize_path(path) when is_bitstring(path) do
[path]
end
# character list
defp normalize_path(path) when is_list(path) do
[to_string(path)]
end
我想在代码的另一部分中使用normalize_path,将normalize_path函数抽象为实用程序模块或库的最佳方法是什么?我仍然希望将该函数保持为仅在内部使用,而不是作为公共函数使用。
答案 0 :(得分:6)
可能你最好的镜头是在一个单独的模块中抽象这些功能,并将其隐藏在@moduledoc false
的文档中。这些函数不会是私有,并且您的库的用户仍然可以访问它们,但是如果没有记录它们,那么您将它们标记为不是库API的一部分。
defmodule Helpers do
@moduledoc false
@doc """
You can still provide per-function docs for documenting how the code works;
these docs won't be public anyways since `@moduledoc false` hides them.
"""
def helper(...), do: ...
end