【发布时间】:2021-02-09 10:35:04
【问题描述】:
我需要创建一个函数,该函数采用双精度并基于第一个返回新列表,其中包括属于 范围的第一个列表中元素的绝对值。我需要使用过滤。我有一个想法,但它不起作用。对不起,也许我的问题很简单,但我是个初学者:)
var numbersReal = List(2.25, -1, -3, 7.32, 0.25, -6, 0, 2, 0, 1, 0, 2.99, 3.02, 0)
def magicFilter(list: List[Double]): List[Double] = {
var newList = List[Double]()
list.foreach {element => if (-5 <= element && element <= 12) newList += scala.math.abs(element) }
newList.toList
}
println(magicFilter(numbersReal))
【问题讨论】:
-
远离
foreach()。它不会像你想的那样做。使用filter()获取所需元素并使用map()修改它们。 -
您的示例不起作用,因为
List附加运算符不是+而是:+。顺便说一句,在 scala 中最好不要使用vars。所以它会起作用:newList = newList :+ scala.math.abs(element)但看看答案,有更好的解决方案。