object LoopList extends App {
var even_list = List()
var odd_list = List()
for (i <- Range(1,10)) {
if ((i % 2) == 0) {
even_list = even_list :+ i
} else {
odd_list = odd_list :+ i
}
}
println(even_list)
}
我试图为奇数和偶数创建两个简单的列表,虽然我知道列表是不变的,但我也尝试了元组。请建议一种新的解决方案,只使用for循环。
2条答案
按热度按时间bvpmtnay1#
据我所知,问题是在声明它们时,编译器没有足够的信息来确定列表中项的类型。因此,它确定列表是
List[Nothing]
,并且编译器告诉您正在尝试添加Int
,但它需要Nothing
。要解决此问题,您可以添加一个简单的类型注解,如下例所示:
您可以使用这个代码here on Scastie。
正如一条评论所建议的,我们绝对鼓励您尝试使用Scala标准库的Collection API,它为您提供了非常强大的构造来以紧凑和可读的方式创建程序,如上面提供的用一行代码构造列表的示例所示:
tv6aics12#
顺便说一句,追加元素是一个非常慢的
List
操作。如果可能,最好使用逆序构造List
:或者使用下面转换为
List
的另一个合适的集合。