使用数值类型类的变量赋值

Man*_*idt 4 scala

我正在尝试编写一个处理Fibonacci序列的泛型迭代器:

def FibIter[T](fst:T , snd:T)(implicit num:Numeric[T]) = new Iterator[T] {
  var fn1 = fst
  var fn2 = snd
  def hasNext = true
  def next() = {
    val ret = fn1
    fn1 = fn2
    fn2 = num.plus(ret,fn2)
    ret
  }
}
Run Code Online (Sandbox Code Playgroud)

但是,编译器抱怨前两个变量赋值:

结构细化中的参数类型可能不是指在该细化之外定义的抽象类型

有谁知道如何解决这个问题?非常感谢你!

0__*_*0__ 5

您似乎可以通过使用专用类来解决此问题

class FibIter[T](fst:T , snd:T)(implicit num:Numeric[T]) extends Iterator[T] {
  var fn1 = fst
  var fn2 = snd
  def hasNext = true
  def next() = {
    val ret = fn1
    fn1 = fn2
    fn2 = num.plus(ret,fn2)
    ret
  }
}
Run Code Online (Sandbox Code Playgroud)