1
1
第一个问题是
改变
到
或
和
当您同时导入两者时
|
2
0
这里有五个不同的问题,让我们逐一解决。
为什么?
如果我们省略了代码片段中不必要的细节,我们将获得:
你问为什么
首先,请注意
不同于
后者是通配符导入(根据需要导入可变映射),而前者只导入符号
在哪里
这个
在里面
Predef
,还有一个直接的快捷方式可以到达
它允许您使用
为什么
这个 specification states about the precedence of imports :
因此,由于第2点和第3点,显式导入
优先于通配符导入
为什么?
现在,还有最后一件事需要澄清:为什么
输出是(可能有点令人惊讶):
在这一点上,规范似乎有点模糊,至少我找不到它在哪里说普通通配符导入掩盖了Predef中的定义。然而 here 上面写着:
我认为最后一句话也涵盖了之后的进口
REPL里发生了什么? 在尝试导入时,必须记住,REPL会像在新的嵌套块中一样计算每一行。这意味着,例如,脚本
将导致
但是,如果您在REPL中逐个输入相同的行,那么就不会发生错误,您将得到一个不可变的
以便最后一次导入优先。我不确定斯卡斯蒂是如何处理的,可能在那里也是一样的,所以这是你必须记住的另一个复杂问题。 |
3
0
默认情况下,Scala中的映射是不可变的。 您不能导入可变的。映射,所以它仍然是不变的。 如果像这样导入,则应该可以:
最合格的导入语句获胜。 |
4
0
通过 违约 Scala给了我们 不变映射 .有 两种方式 创建 可变映射 :
“使用导入” 导入scala。收集可变_ “,您正在导入所有可用的可变集合。” 以及可变地图 . 如果你正在添加 斯卡拉。收集不变的地图 随着 斯卡拉。收集可变_ 你是 告诉scala编译器使用所有可变集合,但如果是Map,则使用immutable。 |
5
-1
tl;博士
使用
这是因为
您导入了不可变的包,这不会自动纳入范围
或者
|
Imran · 是否应在Seq的已处理元素上进行GC? 6 年前 |
addmeaning · 如何用第二个序列的元素填充第一个序列 6 年前 |
ps0604 · 在Scala中附加到Seq不会编译 6 年前 |
Pratap D · scala:创建目录和文件 6 年前 |
spyk · Scala Seq-仅接受相同子类型的元素 7 年前 |
Sai · Spark scala中基于json对象参数的调用方法? 7 年前 |
Frank · 如何从地图中获取不同类型的元素 7 年前 |