我开始学习 Scala 并且在为不耐烦的人阅读 Scala 时,得到了以下练习之一的解决方案:
//No function
def positivesThenZerosAndNegatives(values: Array[Int]) = {
Array.concat(for (value <- values if value > 0) yield value,
for (value <- values if value == 0) yield value,
for (value <- values if value < 0) yield value)
}
但是现在我试图将在每个综合上应用过滤器的函数作为参数传递:
//Trying to use a function (filter)
def positivesThenZerosAndNegatives2(values: Array[Int]) = {
Array.concat(filter(values, _ > 0), filter(values, _ == 0), filter(values, _ < 0))
}
def filter[T: Int](values: Array[T], f: (T) => Boolean) = {
for (value <- values if f(value)) yield value
}
我还没有找到引用元素数组的正确方法。