如何检查Elixir模块是否暴露了特定的公共方法?如何检查该功能是否已被特定曝光arity?
不起作用:
Map.methodsMap.functionsMap.has_function(:keys)She*_*yar 11
您可以检查函数名称是否作为键存在 Map.__info__(:functions)
module = Map
func = :keys
Keyword.has_key?(module.__info__(:functions), func)
# => true
Run Code Online (Sandbox Code Playgroud)
要查看arity,我们可以使用Kernel.function_exported?/3:
Kernel.function_exported?(Map, :keys, 1) # => true
Kernel.function_exported?(Map, :keys, 2) # => false
Run Code Online (Sandbox Code Playgroud)