为什么在 scala 中创建映射不需要并允许新运算符



我们在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

最新更新