我们使用以下方法在scala中创建新地图:
val treasureMap = Map[Int, String]()
但为什么在这里使用新的运营商是违法的?
val treasureMap = new Map[Int, String]()
我认为new是用于创建新对象,在上面的示例中我创建了一个新对象.
Map
是一个trait
(就像一个界面java
) - 这是一个没有实现的合同.
没有new
你使用apply
单身对象的工厂方法命名Map
:
val treasureMap = Map.apply[Int, String]()
在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