私はScala適用と高次関数を学んでいます。私はこのコーディングを持っていますが、なぜコンパイラが私にエラーを与えたのですか?「欠落しているパラメータタイプ」、それを修正する方法は?スカラ高次関数コンパイラエラー
import scala.collection.mutable.ListBuffer
object MyArr {
var mList1 = ListBuffer[Int]()
def filter(p: Int => Boolean): List[Int] = {
val mList = List[Int]()
for (x <- mList1) {
if (p(x)) x :: mList
}
mList
}
def apply(x: Array[Int]) = {
for (y <- x) mList1 += y
}
}
def isEven(x: Int): Boolean = {
x % 2 == 0
}
var mCustomArr = MyArr(Array(1, 2, 3, 4))
mCustomArr.filter(x => isEven(x)).foreach(println)
適用方法がただ1つのパラメータを取り、それをmList1に追加すると動作します。どうして ?
ありがとう
適用機能をご覧ください。それはあなたが思うように動作しません。 – puhlen
Scalaの哲学 – cchantep
@cchantepに対応していない 'var'やそのような変更を避けるようにしてください。 – user1615666