我正在學習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)
如果apply方法只需要一個參數並將其添加到mList1,它將工作。爲什麼?
感謝
看看你的應用功能。它不像你認爲的那樣工作。 – puhlen
儘量避免'var'和這樣的可變性,那不符合斯卡拉哲學 – cchantep
@cchantep,你是對的,會修改。 – user1615666