为什么调用fn(Iterator(“foo”)进行编译,但调用fn(fooIterator)失败,并显示错误“类型不匹配;找到:Iterator [java.lang.String] required:scala.Iterator [ com.banshee.Qx.HasLength]“这两个调用函数获取结构类型集合有什么区别?
object Qx {
type HasLength = {def length: Int}
def fn(xs: Iterator[HasLength]) = 3
var tn = fn(Iterator("foo"))
var fooIterator = Iterator("foo")
var tnFails = fn(fooIterator) //doesn't compile
}
他们不是一回事
你可以发布迭代器的类型singnatures吗?可能有变异注释或暗示? – Dario 2010-05-16 20:26:16
这只是标准库的东西,不需要额外的代码。 scala> Iterator(“foo”) res0:Iterator [java.lang.String] =非空迭代器 – 2010-05-16 20:31:14