我是比較新的Scala和通過一些教程,我在http://docs.scala-lang.org/overviews/collections/maps.html撞上了這段代碼會:提取物中階:應用之間的差異()和定義的函數
import scala.collection.mutable.{Map,
SynchronizedMap, HashMap}
object MapMaker{
def makeMap: Map[String,String] = {
new HashMap[String,String] with SynchronizedMap[String,String]{
override def default(key:String) = "Why do you want to know?"
}
}
}
val capital = MapMaker.makeMap
capital ++ List("US" -> "Washington",
"Paris" -> "France", "Japan" -> "Tokyo")
我試圖創建一個「應用「函數內部的對象,並擺脫MapMaker.makeMap語法。因此,而不是代碼是這樣的
object MapMaker{
def apply: Map[String,String] = {
new HashMap[String,String] with SynchronizedMap[String,String]{
override def default(key:String) = "Why do you want to know?"
}
}
}
val capital = MapMaker
capital ++ List("US" -> "Washington",
"Paris" -> "France", "Japan" -> "Tokyo")
但它不工作,因爲它返回一個別樣的價值
scala> val capital = MapMaker
capital: MapMaker.type = [email protected]
我只是在做這個學習的時間和方式的緣故使用您在提取器對象中使用的「應用函數」。