erlang的类型规范type和opaque的区别

原创
2013/03/30 16:18
阅读数 2.9K

erlang中声明新类型,使用type和opaque关键字

type的使用

-module(module1).

-export_type([my_tup2/0]).

-type my_tup2() :: {my_tup2, atom(), atom()}.
-module(module2).
-export([main/0]).

-spec foo2(module1:my_tup2()) -> ok.
foo2({my_tup2, _, _}) -> ok.

main() ->
    foo2({my_tup2, a, b}).
如果把关键字type换成opaque,

-module(module1).

-export_type([my_tup2/0]).

-opaque my_tup2() :: {my_tup2, atom(), atom()}.
使用dialyzer分析,会发现警告;这是因为opaque的类型只能在定义的模块内部使用。




展开阅读全文
打赏
0
1 收藏
分享
加载中
打赏
0 评论
1 收藏
0
分享
返回顶部
顶部