我正在尝试使用可区分联合创建树节点数据类型。
但是,编译器给我一个错误提示“此声明中不允许使用匿名类型变量”</p>
是什么导致错误?
type TreeNode = | TreeNode of int * (Some (TreeNode)) * (Some(TreeNode))
我正在尝试使用可区分联合创建树节点数据类型。
但是,编译器给我一个错误提示“此声明中不允许使用匿名类型变量”</p>
是什么导致错误?
type TreeNode = | TreeNode of int * (Some (TreeNode)) * (Some(TreeNode))
问题在于它Some
是该'T option
类型的构造函数之一(因此您可以在编写表达式时使用它来创建选项值)。
在可区分联合的类型定义中,您需要使用类型名称 - 如果您希望拥有左右分支,其中每个分支都可能丢失,则类型为TreeNode option
:
type TreeNode = | TreeNode of int * (TreeNode option) * (TreeNode option)
这是一个非常基本的问题,所以我建议查看F# wikibook以获取更多信息(或几乎任何 F# 介绍或书籍)。