为什么在scala中创建地图不需要并允许新的运算符?

时间:2013-12-26 11:08:08

标签: scala new-operator

我们使用以下方法在scala中创建一个新地图:

val treasureMap = Map[Int, String]()

但为什么在这里使用new运算符是违法的?

val treasureMap = new Map[Int, String]()

我认为new是用于创建新对象,在上面的示例中,我创建了一个新对象。

1 个答案:

答案 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