Erlang的类型规范type和opaque的比较
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的比较相关推荐
- GraphQL入门之Schema和类型规范
GraphQL的Schema 和类型规范 Schema 是用于定义数据结构的,比如说,User对象中有哪些属性,对象与对象之间是什么关系等. 参考官网文档:http://graphql.cn/lear ...
- 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 /* 对象类型属于用户自定义的一种复合类型,它封装了数据结构和拥 ...
- JsonMappingException:找不到类型[simple type,class]的合适构造函数:无法从JSON对象实例化
本文翻译自:JsonMappingException: No suitable constructor found for type [simple type, class ]: can not in ...
- linux 进程间通信 dbus-glib【实例】详解三 数据类型和dteeth(类型签名type域)(层级结构:服务Service --> Node(对象、object) 等 )(附代码)
linux 进程间通信 dbus-glib[实例]详解一(附代码)(d-feet工具使用) linux 进程间通信 dbus-glib[实例]详解二(上) 消息和消息总线(附代码) linux 进程间 ...
- 不完整类型(partial type)
一.不完整类型(partial type)实例 1 public partial class Program 2 { 3 public void BaseFunc() 4 { 5 Console.Wr ...
- java中的类型擦除type erasure
文章目录 简介 举个例子 原因 解决办法 总结 java中的类型擦除type erasure 简介 泛型是java从JDK 5开始引入的新特性,泛型的引入可以让我们在代码编译的时候就强制检查传入的类型 ...
- C# 8中的范围类型(Range Type)
C# 8.0中加入了一个新的范围类型(Range Type). 这里我们首先展示一些代码,并一步一步为代码添加一些不同的东西, 为大家展示一下范围类型的功能和用法. 我们最原始的代码如下: 这里我们显 ...
- TypeScript 交叉类型(intersection type)
在TS中和联合类型(union type)对应的还有交叉类型(intersection type). 交叉类型的出现主要为了组合多个对象类型(object type),因为相对于interface,o ...
- TypeScript 联合类型(union type)
TS是JS的超集,在JS的基础上添加了一套类型系统,这样的TS可以被静态分析带来的好处显而易见. let val: string = 'val'; 声明一个string类型的变量val. let va ...
最新文章
- [HTTP协议]入门篇
- 使用计算机视觉来做异常检测!
- 【Java】eclipse如何导入项目
- 2020年牛客算法入门课练习赛1【完结】
- nyoj1237 最大岛屿(河南省第八届acm程序设计大赛)
- 8086逻辑运算和移位
- android okio使用方法,Android 开源框架 Okio 原理剖析
- Linux 进程通信fifo,Linux 进程通信之FIFO的实现
- 常见的http状态码
- matlab中计算不等式的解,matlab解不等式
- 太强了!仿京东电商项目终于开源了~
- Vue 应用性能优化指南(转)
- ASP基础教程:ASP脚本变量、函数、过程和条件语句
- php修改sessiob时间_php中session过期时间设置
- mysql8 groups关键字
- 时间协议ntp服务器,时间服务器NTP搭建及NTP协议简介
- 【FPGA教程案例33】通信案例3——基于FPGA的BPSK调制信号产生,通过matlab测试其星座图
- html5中框架怎么写,html框架布局模板
- 黑鲨重装计算机安装无法继续,示例黑鲨装机大师装机失败无法开机怎么办?
- msf介绍及其常用模块
热门文章
- 【深度相机系列二】深度相机分类之飞行时间法(TOF)
- mntr is not executed because it is not in the whitelist.
- 2021年茶艺师(初级)找解析及茶艺师(初级)复审模拟考试
- 美国大兵的二十二条军规
- 公用一个由器被别人用psp终结者限速了怎么
- H5页面微信分享和手Q分享设置
- C语言块级变量:在代码块内部定义的变量
- ACPI Specification 第三章 ACPI概念
- 在使用element-ui分页器时遇到的数值绑定错误
- 【python设置临时环境变量】export PYTHONPATH=$(pwd):${PYTHONPATH}