什么是-规格“;你用Erlang语法吗?如果函数创建时使用或不使用-spec,那么区别是什么

什么是-规格“;你用Erlang语法吗?如果函数创建时使用或不使用-spec,那么区别是什么,erlang,Erlang,我是erlang编程新手。我有很多疑问。其中之一是使用-spec 在Erlang语法中“-spec”起什么作用?如果创建函数时使用或不使用-spec,有什么区别 add(A, B) -> A + B. 无规范函数 add(A, B) -> A + B. 具有-spec的函数 -spec add(Number, Number). add(A, B) -> A + B. 我在谷歌上搜索了一下,但无法理解-spec的确切用法。有人能解释一下吗?spec汇

我是erlang编程新手。我有很多疑问。其中之一是使用-spec

在Erlang语法中“-spec”起什么作用?如果创建函数时使用或不使用-spec,有什么区别

add(A, B) ->
    A + B.
无规范函数

add(A, B) ->
    A + B.
具有-spec的函数

-spec add(Number, Number).
add(A, B) ->
    A + B.

我在谷歌上搜索了一下,但无法理解-spec的确切用法。有人能解释一下吗?

spec
汇总了有关代码的信息。它表示函数的arity,并与
-type
声明相结合,有助于文档和bug检测工具

像Edoc这样的工具将这些类型规范用于构建文档。 像透析器这样的工具使用它对代码进行静态分析


因此,运行的代码不直接使用它,但许多工具使用它来更好地“理解”代码。

因此,如果我在erlang模块中不使用-spec,也没有什么害处。谢谢你的回答,我现在很清楚了。@Shahid,Erlang是作为一种动态类型的语言发明的,这意味着你不需要像在C/C++中那样声明变量的类型。有些人不喜欢动态类型的语言,比如C/C++程序员,因此有人试图通过在语言中添加
-spec
-type
使Erlang更像一种静态类型的语言。学习erlang已经够难了,因为
-spec
-type
不会造成额外的混乱。暂时忘记它们,但要更清楚地了解它们的用途,请参阅@7stud,非常感谢您的进一步澄清。我也意识到,与其他语言相比,学习erlang非常困难。但这是一门很有趣的语言。谢谢大家!@7stud,我指的是我最初学习的erlang教程。这是一个非常有用且描述良好的erlang教程。Thnx@7Stud,我正在开发聊天应用程序。我想获取一条最新的聊天信息,显示在最近聊天列表中的聊天伙伴下面。我发现,但它看起来像是用旧版本的erlang编写的,并且在编译时会出现错误。我只是想知道你对此有什么想法。提前谢谢。