定义“split”函数,将一个流分成两个流。第一个列表应包含奇数索引的元素,第二个列表应包含偶数索引的元素。示例:split(Stream(5, 6, 3, 2, 1)) -> Stream(5, 3, 1) and Stream(6, 2)
我的尝试:
def split(originalElements: Stream[Any]): (Stream[Any], Stream[Any]) = {
var oddList: Stream[Any] = Stream();
var evenList: Stream[Any] = Stream();
for (i <- 0 until originalElements.length) {
if (i % 2 == 0) {
oddList = oddList :+ originalElements(i)
} else {
evenList = evenList :+ originalElements(i)
}
}
(oddList, evenList)
}
println(split(Stream(5, 6, 3, 2, 1)))
我得到的输出是-〉(Stream(5, <not computed>),Stream(6, <not computed>))
我对流函数有些困惑,有人能帮我理解这段代码中的错误,以及为什么我没有得到正确的输出吗?提前感谢!
1条答案
按热度按时间qyswt5oh1#
你可以尝试使用分区函数或者自己用
filter
和filterNot
函数重新实现它。流不是一个列表,你不应该使用length
。流可能是无限的。