我们使用以下方法在scala中创建一个新地图:
val treasureMap = Map[Int, String]()
但为什么在这里使用new运算符是违法的?
val treasureMap = new Map[Int, String]()
我认为new是用于创建新对象,在上面的示例中,我创建了一个新对象。
答案 0 :(得分:5)
Map
是一个trait
(就像java
中的界面一样) - 这是一个没有实现的合同。
如果没有new
,则使用名为Map
的单个对象的工厂方法apply
:
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