Luk*_*uke 1 scala new-operator
我们使用以下方法在scala中创建新地图:
val treasureMap = Map[Int, String]()
Run Code Online (Sandbox Code Playgroud)
但为什么在这里使用新的运营商是违法的?
val treasureMap = new Map[Int, String]()
Run Code Online (Sandbox Code Playgroud)
我认为new是用于创建新对象,在上面的示例中我创建了一个新对象.
Map是一个trait(就像一个界面java) - 这是一个没有实现的合同.
没有new你使用apply单身对象的工厂方法命名Map:
val treasureMap = Map.apply[Int, String]()
Run Code Online (Sandbox Code Playgroud)
在scala你可以称之为一个apply通过将对象名称后的括号内的任何物体的方法:
val functionIncrement = (_: Int) + 1
functionIncrement(2)
// 3
functionIncrement.apply(2)
// 3
val treasureMap = Map.apply(1 -> "a")
treasureMap(1)
// a
treasureMap.apply(1)
// a
Run Code Online (Sandbox Code Playgroud)