为什么在scala中创建映射不需要并允许使用新操作符?
我们使用以下方法在scala中创建新地图:为什么在scala中创建映射不需要并允许使用新操作符?,scala,new-operator,Scala,New Operator,我们使用以下方法在scala中创建新地图: val treasureMap = Map[Int, String]() 但为什么在这里使用新的运营商是非法的 val treasureMap = new Map[Int, String]() 我认为new是用来创建新对象的,在上面的示例中,我正在创建一个新对象。Map是一个特性(就像java中的一个接口)-它是一个没有实现的契约 如果没有new,您将使用名为: 在scala中,您可以通过在对象名称后放置括号来调用任何对象的apply方法: val
val treasureMap = Map[Int, String]()
但为什么在这里使用新的运营商是非法的
val treasureMap = new Map[Int, String]()
我认为new是用来创建新对象的,在上面的示例中,我正在创建一个新对象。
Map
是一个特性(就像java
中的一个接口)-它是一个没有实现的契约
如果没有new
,您将使用名为:
在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
Map
是一种trait
(就像java
中的接口一样)-它是一种没有实现的契约
如果没有new
,您将使用名为:
在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