由于某些原因,F#无法识别我定义的类型。我有几种类型:
type point = int * int
type colour = int * int * int
type figure =
| Circle of point * int * colour
| Rectangle of point * point * colour
| Mix of figure * figure
point
和colour
类型可以正常工作,但是当我尝试编译如下函数时:
let testFig : figure =
(50,50), 45, (255,0,0)
编译器抛出fs001
异常,并说它期望figure
但得到(int*int) * int * (int*int*int)
(这是数字的一部分!)。
我有点迷茫,看不清为什么它不起作用。
答案 0 :(得分:3)
要创建figure
值,您需要指定要创建的案例的名称。例如,如果要创建Circle
,则需要编写:
let testFig : figure =
Circle((50,50), 45, (255,0,0))
没有Circle
构造函数,您只需创建一个值(50,50), 45, (255,0,0)
,它的类型为(int * int) * int * (int * int * int)
。这与point * int * color
相同(因为point
和color
只是别名)。