scala - Scala 是否支持 OR 组合?
问题描述
这个问题可能是一个愚蠢的问题,任何搜索引擎都应该给我一个快速的答案。但是我没有找到任何东西,所以我可能会使用错误的术语。
如果F#|
可以使用符号进行异(或)组合:
type LeftOrRightOrNone =
| Left of string
| Right of string
| None
这意味着 aLeftOrRightOrNone
只能是Left
OR Right
OR类型None
。
我们可以对密封特征有相同的约束:
sealed trait LeftOrRightOrNone
case class Left(..) extends LeftOrRightOrNone
case class Right(..) extends LeftOrRightOrNone
case object None extends LeftOrRightOrNone
但我想知道在 Scala 中是否有更简单的方法来声明此类类型?
谢谢
解决方案
在 Scala 2 中,您需要使用您描述的密封特征和案例类来编写它。Scala 3 对此有更好的语法:
enum Either[+A, +B]:
case Left(a: A)
case Right (b: B)
推荐阅读
- python - 是否有 Pandas groupby-agg 命名函数的列表?
- r - 如何在文本中查找数字和文本
- transformation - Kentico 转换中的数组 (?)
- javascript - 是否有一种有效的就地算法可以根据给定条件将数组分成左右两部分?
- javascript - 从 iframe 中的 javascript 获取当前 iframe 的 url src
- url - 通过按钮链接传递 URL 参数
- vb.net - 用资源文件路径替换绝对文件路径
- docusignapi - Docusign - 我如何跳过获得同意
- javascript - 三.js点线段距离
- gcc - GDB 运行可执行文件不起作用(VS 代码)