编译器无法识别定义的类型

时间:2019-11-20 11:10:01

标签: f#

由于某些原因,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

pointcolour类型可以正常工作,但是当我尝试编译如下函数时:

let testFig : figure =
    (50,50), 45, (255,0,0)

编译器抛出fs001异常,并说它期望figure但得到(int*int) * int * (int*int*int)(这是数字的一部分!)。

我有点迷茫,看不清为什么它不起作用。

1 个答案:

答案 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相同(因为pointcolor只是别名)。