Erlang中声明自定义类型,使用关键字type和opaque。

1.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}).

2.opaque的使用

-module(module1).
-export_type([my_tup2/0]).-opaque my_tup2() :: {my_tup2, atom(), atom()}.

使用dialyzer分析,会发现警告;这是因为opaque的类型只能在定义的模块内部使用。

声明为的类型opaque表示其结构不应该在其定义模块之外可见的术语集。也就是说,只有定义它们的模块才允许依赖于它们的术语结构。

Erlang的类型规范type和opaque的比较相关推荐

  1. GraphQL入门之Schema和类型规范

    GraphQL的Schema 和类型规范 Schema 是用于定义数据结构的,比如说,User对象中有哪些属性,对象与对象之间是什么关系等. 参考官网文档:http://graphql.cn/lear ...

  2. Oracle PL/SQL存储过程对象类型Object type详解 create type obj_type as object, create table tab_name of obj_type

    原 oracle 对象类型 object type 置顶 2011年06月13日 18:00:00 oypj2010 阅读数:3453 /* 对象类型属于用户自定义的一种复合类型,它封装了数据结构和拥 ...

  3. JsonMappingException:找不到类型[simple type,class]的合适构造函数:无法从JSON对象实例化

    本文翻译自:JsonMappingException: No suitable constructor found for type [simple type, class ]: can not in ...

  4. linux 进程间通信 dbus-glib【实例】详解三 数据类型和dteeth(类型签名type域)(层级结构:服务Service --> Node(对象、object) 等 )(附代码)

    linux 进程间通信 dbus-glib[实例]详解一(附代码)(d-feet工具使用) linux 进程间通信 dbus-glib[实例]详解二(上) 消息和消息总线(附代码) linux 进程间 ...

  5. 不完整类型(partial type)

    一.不完整类型(partial type)实例 1 public partial class Program 2 { 3 public void BaseFunc() 4 { 5 Console.Wr ...

  6. java中的类型擦除type erasure

    文章目录 简介 举个例子 原因 解决办法 总结 java中的类型擦除type erasure 简介 泛型是java从JDK 5开始引入的新特性,泛型的引入可以让我们在代码编译的时候就强制检查传入的类型 ...

  7. C# 8中的范围类型(Range Type)

    C# 8.0中加入了一个新的范围类型(Range Type). 这里我们首先展示一些代码,并一步一步为代码添加一些不同的东西, 为大家展示一下范围类型的功能和用法. 我们最原始的代码如下: 这里我们显 ...

  8. TypeScript 交叉类型(intersection type)

    在TS中和联合类型(union type)对应的还有交叉类型(intersection type). 交叉类型的出现主要为了组合多个对象类型(object type),因为相对于interface,o ...

  9. TypeScript 联合类型(union type)

    TS是JS的超集,在JS的基础上添加了一套类型系统,这样的TS可以被静态分析带来的好处显而易见. let val: string = 'val'; 声明一个string类型的变量val. let va ...

最新文章

  1. [HTTP协议]入门篇
  2. 使用计算机视觉来做异常检测!
  3. 【Java】eclipse如何导入项目
  4. 2020年牛客算法入门课练习赛1【完结】
  5. nyoj1237 最大岛屿(河南省第八届acm程序设计大赛)
  6. 8086逻辑运算和移位
  7. android okio使用方法,Android 开源框架 Okio 原理剖析
  8. Linux 进程通信fifo,Linux 进程通信之FIFO的实现
  9. 常见的http状态码
  10. matlab中计算不等式的解,matlab解不等式
  11. 太强了!仿京东电商项目终于开源了~
  12. Vue 应用性能优化指南(转)
  13. ASP基础教程:ASP脚本变量、函数、过程和条件语句
  14. php修改sessiob时间_php中session过期时间设置
  15. mysql8 groups关键字
  16. 时间协议ntp服务器,时间服务器NTP搭建及NTP协议简介
  17. 【FPGA教程案例33】通信案例3——基于FPGA的BPSK调制信号产生,通过matlab测试其星座图
  18. html5中框架怎么写,html框架布局模板
  19. 黑鲨重装计算机安装无法继续,示例黑鲨装机大师装机失败无法开机怎么办?
  20. msf介绍及其常用模块

热门文章

  1. 【深度相机系列二】深度相机分类之飞行时间法(TOF)
  2. mntr is not executed because it is not in the whitelist.
  3. 2021年茶艺师(初级)找解析及茶艺师(初级)复审模拟考试
  4. 美国大兵的二十二条军规
  5. 公用一个由器被别人用psp终结者限速了怎么
  6. H5页面微信分享和手Q分享设置
  7. C语言块级变量:在代码块内部定义的变量
  8. ACPI Specification 第三章 ACPI概念
  9. 在使用element-ui分页器时遇到的数值绑定错误
  10. 【python设置临时环境变量】export PYTHONPATH=$(pwd):${PYTHONPATH}