私はScalaを学び始めており、Scala for the Impatientを読みながら、演習の1つに対する次の解決策にたどり着きました。
//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)
}
しかし今、私はparamとして、以下の各包括的関数にフィルターを適用する関数を渡そうとしていました。
//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
}
要素配列を参照する正しい方法が見つかりませんでした。