小编Dav*_*den的帖子

Scala - 将Int隐式转换为数字[Int]

我已经创建了一个类,可以通过任何可以转换为数字的东西进行参数化

class Complex[T <% Numeric[T]] (val real : T, val imag : T) {
   //... complex number methods ...
}
Run Code Online (Sandbox Code Playgroud)

然后我尝试在代码中的其他地方:

var myComplex = new Complex(0, 1)
Run Code Online (Sandbox Code Playgroud)

这会引发编译错误,因为(令人惊讶的是)Int和Numeric [Int]之间甚至Int和Integral [Int]之间都没有隐式转换.

我错过了什么吗?在某处我没有看到隐含的转换吗?

在Numeric.scala中定义了一个名为IntIsIntegral的隐式对象.我尝试使用它来创建自己的隐式转换方法:

def implicit intToNumericInt(val i : Int)(implicit n : IntIsIntegral) = n.fromInt(i)
Run Code Online (Sandbox Code Playgroud)

我很惊讶这是必需的,无论如何,它似乎导致无限递归到.fromInt方法.

我确信我遗漏了一些基本的东西(你可以说,我是Scala的新手),所以我会很欣赏正确的方向.

从示例中可以看出,我正在尝试使用可以接受和使用任何数字类型的复数实现.我希望将此贡献给scalala(线性代数)项目.接下来,我想介绍一个Trait,它描述矩阵中元素的责任(主要是+和*运算符),并将复数的改进支持到矩阵操作库中.

scala numeric scala-2.8

6
推荐指数
1
解决办法
4851
查看次数

标签 统计

numeric ×1

scala ×1

scala-2.8 ×1