【发布时间】:2016-11-11 03:23:23
【问题描述】:
我在 scala 中使用泛型和上限,我面临以下问题:
假设我有以下函数(我只期望 Int 或 Char):
def foo[T](tuple: Tuple2[T, T]) = tuple match {
case Tuple2(x: Int, y: Int) => (x to y).toArray
case Tuple2(x: Char, y: Char) => (x to y).toArray
}
我希望有一个更好的压缩形式,例如:
def foo2[T >: Int with Char <: AnyVal](tuple: (T, T)) = (tuple._1 to tuple._2).toArray
但这绝对行不通。
有什么想法吗?
【问题讨论】:
-
我不太了解
T的下限称为Int with Char?那是想做什么? -
抱歉,已编辑。
-
我认为你想要一个联合类型。见stackoverflow.com/questions/3508077/…
-
@YuvalItzchakov 我更新了 foo2 的定义。
-
@ChrisShain 我试图避免冗长的 2 个案例,而不是确保 T 将是 Int 或 Char (我可以假设它只是这两种类型之一)