【发布时间】:2013-09-11 04:41:22
【问题描述】:
在scala中,我们可以通过如下方式获得一个元组上的迭代器
val t = (1, 2)
val it = t.productIterator
甚至
it.foreach( x => println(x.isInstanceOf[Int]) )
返回 true,我们不能在不使用 asInstanceOf[Int] 的情况下对迭代器值进行简单操作,因为
it.foreach( x => println(x+1) )
返回错误:类型不匹配;找到:需要 Int(1):字符串
我了解 Integer 与 Int 的问题,但 isInstanceOf[Int] 的有效性仍然有些令人困惑。
对元组执行这些操作的最佳方法是什么?请注意,元组可以混合使用整数和双精度数等类型,因此转换为列表可能并不总是有效。
【问题讨论】:
-
这个问题似乎更多是关于扁平化元组的元组
-
如果您发现自己想要遍历一个元组并对每个值应用一个函数,这通常表明您一开始就不应该使用元组。元组不是集合,你不应该尝试这样使用它们。
-
对,但有时你还是会得到元组,就像从数据库中读取一样,最简单的是直接处理它们。
-
好吧,毕竟这可能不是最简单的;-)。
标签: scala iterator scala-collections