types - 如何为可变变量定义特定类型?
问题描述
我是 OCaml 的初学者。我想编译这段代码,但我得到一个错误。
type pointeur_de_code = int;;
type environnement = int;;
type mlvalue =
| Ml1 of int
| Ml2 of pointeur_de_code * environnement;;
let (accu:mlvalue) = ref 0;;
此表达式的类型为 int ref,但表达式应为 mlvalue 类型
解决方案
当您定义变体类型时,就像mlvalue
为该类型的值定义构造函数一样。你有一个名为的构造函数Ml1
,它接受一个int
并产生一个值。你有一个名为的构造函数Ml2
,它接受两个int
s 并产生一个值。
要创建类型的值,您需要包含构造函数。
此外,您的类型accu
不能是mlvalue
. 它必须是mlvalue ref
,这是一个不同的类型。
let accu : mlvalue ref = ref (Ml1 0)
(请注意,您不需要提供accu
.OCaml 的类型。OCaml 会为您推断类型。)
推荐阅读
- ios - 代理属性神秘重置
- c - 使用未知输入调试分段错误
- sql-server - tSQLt 单元测试挂起并给出“测试执行期间发生严重错误。测试没有完成。错误?
- ansible - 带有 linux 命令的 Ansible jinja2 模板
- c# - 如何在不使用 ViewBag 的情况下在 Identity 中绑定 RegisterModel 中的属性
- django - 使用 manage.py dumpdata 时 Django sorl 缩略图缓存图像路径不匹配
- docker - 如果保持在线状态,Docker 容器会使用更多 CPU
- apache-kafka - Kafka 连接器 HDFS Sink 5.3.1 无法生成所有 JSON 记录
- javascript - React,未终止的标头 JSX 元素
- asp.net-core - AddJwtBearer() 做我认为的事情吗?