在erlang模块中查找参数类型

时间:2017-10-31 03:16:57

标签: erlang

搜索之后,我无法找到如何在erlang模块中获取参数类型。为了更清楚,这就是我想要做的事情:

  • 1 /显示所有加载的erlang模块:erlang:loaded() - >这将返回一个原子列表,它们是模块名称
  • 2 /显示模块的所有导出功能:Module:module_info(exports) - >这将返回一个元组列表,可能是:{function_name,number_of_parameters)
  • 3 /显示上述功能中的参数类型 - >我被卡住了......

一个例子:

  • 输入:application:load("1", 2, "3", {123, "2\"{[1234", 123}, ad, <<"asa]}\">>\", 2, 300:16>>).
  • 输出:

    • Module_Name:application
    • Function_Name:load
    • 参数数量:6
    • Param列表:

      • "1" ---> type: string
      • 2 ---> type: integer
      • "3" ---> type: string
      • {123, "2\"{[1234", 123} ---&gt;类型:tuple`
      • ad ---> type: atom
      • <<"asa]}\">>\", 2, 300:16>> ---> type: binary

解决

我的问题解决了:erlang parse string to data types using regex

1 个答案:

答案 0 :(得分:0)

我不知道这是可能的,你在Erlang中描述参数的方式是在代码中使用规范注释,但并非所有代码都有详细记录并使用如下规范:

-spec Module:Function(ArgType1, ..., ArgTypeN) -> ReturnType.

此外,函数可以采用不同的参数类型,并使用保护来对输入进行不同的处理。甚至可以在记录上使用语法糖来创建自定义类型或使用any()。 Dialyzer是唯一可以帮助的东西,也许是检查dialyzer:plt_info(Plt)

相关问题