获取 IEx 中所有 Elixir 模块的列表

Loa*_*... 5 elixir elixir-iex

要获取 IEx 中模块上所有函数的列表,我可以运行:


Map.__info__(:functions)
# or
Enum.__info__(:functions)


Run Code Online (Sandbox Code Playgroud)

使用{Module}.__info__(:functions)格式。

如何获取所有标准库模块的列表?

Jon*_*ger 6

如果您想获取所有已加载的 Elixir 模块,而不需要 erlang 模块,请在干净的 IEx shell 中运行以下命令:

:code.all_loaded() 
|> Enum.filter(fn {mod, _} -> "#{mod}" =~ ~r{^[A-Z]} end)
|> Enum.map(fn {mod, _} -> mod end)

# [Exception, Application, Inspect.Atom, IEx.Pry, Logger.Config, Module, Keyword, ... ]
Run Code Online (Sandbox Code Playgroud)

这还包括像 之类的子模块IEx.Config,但您可以使用一些附加映射来过滤它们:

:code.all_loaded() 
|> Enum.filter(fn {mod, _} -> "#{mod}" =~ ~r{^[A-Z]} end)
|> Enum.map(fn {mod, _} -> mod end)
|> Enum.map(fn mod -> hd(Module.split(mod)) end)
|> Enum.uniq

# ["Exception", "Application", "Inspect", "IEx", "Logger", "Module", "Keyword", ... ]
Run Code Online (Sandbox Code Playgroud)

  • `:erlang.loaded() |> Enum.sort() |> Inspection(limit: :infinity) |> IO.puts` (2认同)

Ada*_*hip 4

在 IEx 中,您可以输入:+Tab来获取所有可用模块的列表。