Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么在scala中创建映射不需要并允许使用新操作符?_Scala_New Operator - Fatal编程技术网

为什么在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

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

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