Scala变异泛型类

时间:2018-03-29 11:40:23

标签: scala generics

我有一个增量方法的伪代码。

def increment(A: member, B: amount): B = match B {
  case: Integer => // mutate and return amount+1
  case: Float => // mutate and return amount + 1.0
}

我需要增加数量,B类型的对象并返回相同的数量。这充满了问题。通过匹配类型递增金额的上述逻辑可能不是正确的方法,但我不知道任何其他方法。即使做这样的事情 - 我们如何变异像B这样的泛型?我们需要像容器类这样的东西吗?我在所有其他方法上都画了一个空白。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

这可能有效:

def increment [T] (a: T, b: T) (implicit T: Manifest[T], numeric: Numeric[T]): T = 
   numeric.plus (a, b)

scala> increment (7, 4)
res180: Int = 11

scala> increment (7.0, 4.0)
res181: Double = 11.0

scala> increment (7, 4.0)
res182: Double = 11.0

scala> increment (7.0, 4)
res183: Double = 11.0