2

我正在尝试使用可区分联合创建树节点数据类型。

但是,编译器给我一个错误提示“此声明中不允许使用匿名类型变量”</p>

是什么导致错误?

type TreeNode = | TreeNode of int * (Some (TreeNode)) * (Some(TreeNode))
4

1 回答 1

9

问题在于它Some是该'T option类型的构造函数之一(因此您可以在编写表达式时使用它来创建选项值)。

在可区分联合的类型定义中,您需要使用类型名称 - 如果您希望拥有左右分支,其中每个分支都可能丢失,则类型为TreeNode option

type TreeNode = | TreeNode of int * (TreeNode option) * (TreeNode option)

这是一个非常基本的问题,所以我建议查看F# wikibook以获取更多信息(或几乎任何 F# 介绍或书籍)。

于 2014-06-25T13:33:25.113 回答