我有一个Traversable,我想把它变成一个Java Iterator.我的问题是我希望一切都懒得完成.如果我在遍历上执行.toIterator,它会急切地产生结果,将其复制到List中,并在List上返回一个迭代器.
我确定我在这里错过了一些简单的东西......
这是一个小测试用例,显示了我的意思:
class Test extends Traversable[String] {
def foreach[U](f : (String) => U) {
f("1")
f("2")
f("3")
throw new RuntimeException("Not lazy!")
}
}
val a = new Test
val iter = a.toIterator
Run Code Online (Sandbox Code Playgroud) 我有一个List [Number].它包含Number - Int,Double等不同子类的值.我想把所有的价值加在一起.如果列表只包含Int,我希望结果是Int.如果有混音,我想遵循正常的Scala规则:Int + Double = Double(依此类推).
我试过这个:
val result = list.reduceLeft(_ + _)
Run Code Online (Sandbox Code Playgroud)
这甚至不可编译.Number没有定义带有另一个Number的+方法.
我怎么能做到这一点?
安德烈斯
在斯卡拉.我有两个Any类型的对象.如果可能的话,我想将对象强制转换为正确的Ordered特征,然后将它们与<method进行比较.否则,我想抛出异常.应该很简单,但我很难过......