Seq.range [Double]:无法找到证据参数的隐含值

时间:2018-01-20 12:39:43

标签: scala

Seq.range[Double](.0, 1.0 + step, step).foreach(current_degree_of_freedom => { ... }

step一个Double)。

完整错误是:

  

错误:(39,26)无法找到证据参数的隐含值   类型积分[双]           Seq.range [Double](。0,1.0 + step,step).foreach(current_degree_of_freedom => {

我已阅读过ScalaDoc(http://www.scala-lang.org/api/2.12.3/scala/collection/Seq $。html#rangeT(implicitevidence $ 2:Integral [T]):CC [T]),问题来自第二个参数curryied列表。

但我不明白这个错误......我认为这可能是因为[Double]之后Seq.range的缺席,所以我写了但是它并没有解决问题...

有人可以解释我的问题吗?

2 个答案:

答案 0 :(得分:2)

Double值传递给range方法时,编译器将查找隐式Integral[Double]。显然你没有提供这个隐含的值,因此错误。要使编译器满意,请添加隐式Integral[Double]

implicit val integralD = scala.math.Numeric.DoubleAsIfIntegral

val range = Seq.range(0.0, 1.2, 0.2)
// List(0.0, 0.2, 0.4, 0.6000000000000001, 0.8, 1.0)

答案 1 :(得分:1)

你需要Seq吗? Scala具有非常丰富的类型结构。

您的类型可能是NumericRange,并且有一种自然的方式来生成您想要使用的数字序列。检查此

的结果类型
val mynumrange = 0.0 to 1.0 by step