我是Scala的新手,在浏览示例scala项目时遇到了这行代码。有人可以向我解释下面粗体代码的目的:
struct.iterator().asInstanceOf[Iterator[_ <: Product2[Any, Any]]])
我知道我们正在为struct对象生成一个迭代器,但是asInstanceOf函数的目的到底是什么,以及它在同一个程序中的其他地方有什么区别,迭代器只是通过以下方式生成: p>
struct.iterator()
答案 0 :(得分:1)
struct.iterator().asInstanceOf[Iterator[_ <: Product2[Any, Any]]])
让我们逐个分享。
.asInstanceOf
- 它类似于javas强制转换操作符,它将类型更改为:
Iterator[type]
- 允许迭代元素序列的数据结构
_ <: Product2[Any, Any]
- 这里有点棘手。 A&lt;: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视频。