我是Scala新手,在浏览一个示例Scala项目时遇到了这行代码。谁能给我解释一下下面粗体代码的目的:
struct.iterator().asInstanceOf[Iterator[_ <: Product2[Any, Any]]])
我知道我们正在为struct对象生成一个迭代器,但是这里的asInstanceOf函数的确切目的是什么,它与同一程序中其他地方的迭代器有什么不同?
struct.iterator()
struct.iterator().asInstanceOf[Iterator[_ <: Product2[Any, Any]]])
让我们一步一步来。
.asInstanceOf
-它类似于java的强制转换操作符,它将类型更改为:
Iterator[type]
-允许在元素序列上迭代的数据结构
_ <: Product2[Any, Any]
-这里有点棘手。A <: B表示B必须是A的子类型
详情请浏览:http://docs.scala-lang.org/tutorials/tour/variances.html和http://blogs.atlassian.com/2013/01/covariance-and-contravariance-in-scala/
如果你想了解更多关于协方差和逆变性的知识,请查看Martin Odersky在coursera上的视频