本节描述 OCaml 程序操作的各种值。
整数值是从 −230 到 230−1 的整数,即 −1073741824 到 1073741823。实现可能支持更宽范围的整数值:在 64 位平台上,当前实现支持范围从 −262 到 262−1 的整数。
浮点值是以浮点表示的数字。当前实现使用符合 IEEE 754 标准的双精度浮点数,具有 53 位尾数和范围从 −1022 到 1023 的指数。
字符值表示为 0 到 255 之间的 8 位整数。0 到 127 之间的字符代码按照 ASCII 标准解释。当前实现按照 ISO 8859-1 标准解释 128 到 255 之间的字符代码。
字符串值是字符的有限序列。当前实现支持包含最多 224 − 5 个字符(16777211 个字符)的字符串;在 64 位平台上,限制为 257 − 9。
值的元组写成 (v1, …, vn),表示值 v1 到 vn 的 n 元组。当前实现支持最多 222 − 1 个元素(4194303 个元素)的元组。
记录值是带标签的值元组。记录值写成 { field1 = v1; …; fieldn = vn } 将值 vi 与记录字段 fieldi 关联,其中 i = 1 … n。当前实现支持最多 222 − 1 个字段(4194303 个字段)的记录。
数组是相同类型值的有限、可变大小的序列。当前实现支持包含最多 222 − 1 个元素(4194303 个元素)的数组,除非元素是浮点数(在这种情况下为 2097151 个元素);在 64 位平台上,所有数组的限制为 254 − 1。
变体值要么是常量构造器,要么是非常量构造器应用于多个值。前者写成 constr;后者写成 constr (v1, ... , vn ),其中 vi 被称为非常量构造器 constr 的参数。如果只有一个参数,则可以省略括号。
以下常量被视为内置常量构造器
常量 | 构造器 |
false | 布尔值 false |
true | 布尔值 true |
() | “单元”值 |
[] | 空列表 |
当前实现限制每个变体类型最多具有 246 个非常量构造器和 230−1 个常量构造器。
多态变体是变体值的另一种形式,不显式属于预定义的变体类型,并遵循特定的类型规则。它们可以是常量,写成 `tag-name,也可以是非常量,写成 `tag-name(v)。
函数值是从值到值的映射。
对象由一个隐藏的内部状态(它是实例变量的记录)和一组用于访问和修改这些变量的方法组成。对象的结构由创建它的顶级类描述。