【发布时间】:2021-04-02 19:41:31
【问题描述】:
这个问题可能是一个愚蠢的问题,任何搜索引擎都应该给我一个快速的答案。但是我没有找到任何东西,所以我可能使用了错误的术语。
如果 F# 可以使用| 符号进行异(或)组合:
type LeftOrRightOrNone =
| Left of string
| Right of string
| None
这意味着LeftOrRightOrNone 只能是Left OR Right OR None 类型。
我们可以通过 sealed trait 拥有相同的约束:
sealed trait LeftOrRightOrNone
case class Left(..) extends LeftOrRightOrNone
case class Right(..) extends LeftOrRightOrNone
case object None extends LeftOrRightOrNone
但我想知道在 Scala 中是否有更简单的方法来声明此类类型?
谢谢
【问题讨论】:
-
也许你可以试试 Scala 3 dotty.epfl.ch/docs/reference/new-types/union-types.html
-
这能回答你的问题吗? Scala variable with multiple types
-
@TomerShetah 不,不是真的。这个答案与我的 sealed trait 建议相同。我的问题是有一个更简单的方法来声明它们。
-
Scala 2 本身不支持副产品。使用无形库或等待 Scala 3
-
您能解释一下“OR 组合”是什么意思吗?根据我对 F# 的公认有限知识,您展示的内容与“或”或“组合”无关,而只是封闭代数和类型。
标签: scala types functional-programming composition union-types