我正在尝试编写一个用于处理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
}
}
然而,编译器抱怨前两个变量赋值:
结构细化中的参数类型可能不会引用在该细化之外定义的抽象类型
有谁知道如何解决这个问题? 非常感谢你!
答案 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
}
}