有没有办法在 Scala 中使用“+”运算符作为传递给方法的参数的附加作为泛型类型?

Is there a way to use the '+' operator as addition on parameters passed to a method as a generic type in Scala?

我最近发现了 Scala,并且我编写了一个 RK4 求解器,我试图尽可能地概括它。在让它与任意大的系统一起工作后,我想让它与任意数字数据类型一起工作 - 但我已经 运行 撞墙了。当我使用通用数据类型时,无论我对其施加什么限制,Scala 都会自动将所有内容转换为字符串以使用 '+'。

到目前为止,我尝试过的大部分内容最终都是以不同的方式编写相同的内容。我可以将所有内容显式转换为我将使用的最高精度类型 (BigDecimal),然后收工,但这忽略了概括函数的大部分要点。

这不是我的整个 RK4 程序,但它是我在过去几个小时里一直在搞砸的一段代码:

def vecSum[T : Numeric]( u: Vector[T], v: Vector[T]): Vector[T] = (u, v).zipped.map(_ + _)

它是向量和(数学向量,数据结构只是巧合),它接受两个向量和return一个单个向量,其中每个元素是输入向量中两个对应元素的总和.

我正在尝试将它变成 return 与输入具有相同数字类型的向量,但它只想吐出一个字符串向量。

使用

  def vecSum[T](u: Vector[T], v: Vector[T])(implicit o: Numeric[T]): Vector[T] = (u, v).zipped.map((x, y) => o.plus(x, y))

如果你特别想使用+你可以使用

import Numeric.Implicits._
def vecSum2[T: Numeric](u: Vector[T], v: Vector[T]): Vector[T] = {
  (u, v).zipped.map((x, y) => x + y)
}