scala - scala REPL 和 Intellij 中的 val 行为
问题描述
正如预期的那样,重新分配在 REPL 中给出如下错误
scala> val a=1
a: Int = 1
scala> a=2
<console>:12: error: reassignment to val
a=2
^
a=2
但是下面的重新分配在以 val开头时不会在 REPL 中给出错误。
scala> val a=1
a: Int = 1
scala> val a=2
a: Int = 2
当我在 Intellij 中执行以下代码时,它给出错误。
object Test {
def main(args: Array[String]) {
val x = 1
val x = 2
}
}
为什么val a=1
并且val a=2
在 REPL 中没有给出任何错误(如果它只是 a=2 则错误)但在 Intellij 中出现错误。
解决方案
- 每行输入都是单独编译的。
- 对前几行的依赖包含在自动生成的导入中。
结合这两个事实,我们可以理解它们不在同一个命名空间中,这与您提供的示例不同,其中 2 个被调用的变量x
在同一个类中。
推荐阅读
- android - 在kotlin中取消初始化一个lateinit var
- laravel - 如何修复'试图获取非对象的属性'id'。注销后当我回去然后我得到错误
- c# - 如何搜索包含特定数量字母的单词
- typescript - 使 http 请求等待返回其响应
- python - 如何将 pyodbc 导入 Azure Data Studio 以在笔记本中使用?
- spring - Spring 配置绑定失败
- python - 获取所有叶节点的路径(从根节点)?
- c# - 动态添加 label/checkBox-Combo 并将代码放在后面
- vue.js - BootstrapVue 上的条件格式
? - vba - 宏的自动化