我想定义一个记录类型,其中一个成员是类型数组,如下所示:
type h = {x:int; y:int; pic : Array of int};;
这会在of
位置发出语法错误:
type h = {x:int; y:int; pic : Array *of* int};;
现在,如果我使用中间类型命名Array of int
,它可以工作:
type a = Array of int;;
type h = {x:int; y:int; pic : a};;
是缺陷还是我想念某事? (我的ocaml版本是4.05.0)
然后,一旦type h
被定义,我就无法使用它:
let n = {x=0;y=0;pic=[| 0 |]};;
我收到了错误:
Error: This expression has type 'a array but an expression was expected of type
a
答案 0 :(得分:3)
int
s数组的类型为int array
。 type a = Array of int
定义了一个带有单个构造函数Array
的变体,它带有int
类型的有效负载。