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
的缺席,所以我写了但是它并没有解决问题...
有人可以解释我的问题吗?
答案 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