我们在scala中创建一个新的map:
val treasureMap = Map[Int, String]()
但是为什么在这里使用新运算符是非法的呢?
val treasureMap = new Map[Int, String]()
我认为new是用于创建新对象,在上面的示例中,我正在创建一个新对象。
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