我有以下Scala代码段:
(1 to 10).foreach(a => (1 to 100 by 3).toList.count(b => b % a == 0))
,我希望表现如下:
但是,当我运行代码片段时,我得到一个空列表。我做错了什么?
感谢您的帮助!
答案 0 :(得分:4)
使用foreach
时,完全可以预期这种行为。
foreach
将一个过程 - 一个结果类型为Unit
的函数 - 作为右操作数。它只是将过程应用于每个List元素。操作的结果再次是Unit
;没有汇总结果列表。
它通常用于副作用 - 比如打印或保存到数据库等等。
您应该使用map
代替:
scala> (1 to 10).map(a => (1 to 100 by 3).toList.count(b => b % a == 0))
// res3: scala.collection.immutable.IndexedSeq[Int] = Vector(34, 17, 0, 9, 7, 0, 5, 4, 0, 4)