Tag: 代数数据类型

Kotlin中的代数数据类型

我想弄清楚如何在Kotlin中使用代数数据类型,所以我试图通过以下方式实现一个基本的BinaryTree类型。 sealed class Tree<T>{ class Node<T>(val left: Tree<T>, val right: Tree<T>): Tree<T>() class Leaf<T>(val value: T): Tree<T>() } 这一切都很好,并让我构建下面的树: val myTree1: Tree<Int> = Node(Leaf(4), Leaf(2)) 不过,我也想要一个“空”的类型,所以我可以表达如下: val myTree1: Tree<Int> = Node(Node(Leaf(4), Leaf(3)), Empty) 我尝试了以下内容: sealed class Tree<T>{ class Node<T>(val left: Tree<T>, val right: Tree<T>): Tree<T>() class Leaf<T>(val value: T): Tree<T>() object Empty: Tree() } 虽然我得到了类型参数预期在对象Empty:Tree(),这实际上很合乎逻辑的错误。 […]

Kotlin和歧视工会(总数类型)

Kotlin有什么像歧视工会(总和类型)? 什么是这个(F#)的惯用Kotlin翻译: type OrderMessage = | New of Id: int * Quantity: int | Cancel of Id: int let handleMessage msg = match msg with | New(id, qty) -> handleNew id qty | Cancel(id) -> handleCxl id