【发布时间】:2015-07-09 13:16:23
【问题描述】:
这是一个理论上的问题,但我可能想做的事情。是否可以从 Scala 函数返回多种数据数据类型但限制允许的类型?我知道我可以通过指定返回一种类型,或者我可以通过不指定返回类型来基本上允许任何数据类型,但我想返回 3 种特定数据类型中的 1 种以保留一点类型安全性。有没有办法在返回类型中写一个“或”:
def myFunc(input:String): [Int || String] = { ...}
主要内容是尝试编写通用数据加载脚本。我的一些用户使用 Spark,一些 Scalding,谁知道接下来会发生什么。我希望我的用户能够使用可能返回 RichPipe、RDD 或其他数据格式的通用加载脚本,具体取决于他们使用的框架,但我不想完全抛弃类型安全。
【问题讨论】:
-
Miles Sabin 在 2011 年开发了一种使用纯 Scala 实现联合类型的方法,并在 milessabin.com/blog/2011/06/09/scala-union-types-curry-howard 上公开。几年来,Odersky 一直致力于开发一种名为 Dependent Object Types Calculus 的新类型系统,该系统结合了联合类型,他的工作在 lampwww.epfl.ch/~amin/dot/fool.pdf 中进行了描述
标签: scala