斯卡拉壳.多次声明相同的变量名称



在 Scala Shell 中,我可以多次声明相同的变量,但我没有得到任何错误/警告

例如

scala> val a = 1
a : Int = 1
scala> val a = 2
a : Int = 2
scala> val a = 1
a : Int = 1
scala> lazy val a = 1
a : Int = <lazy>

这里变量名">a"被多次声明,包括varvallazy val

所以我想知道

  1. Scala complier 是如何接受这个的?例如:val a = 1var a = 2哪个优先级更高?
  2. 为什么 Scala shell 在多次声明相同变量名称的同时接受?
  3. 我如何知道声明的变量是可变的还是不可变的,因为相同的变量名称被声明为 varval

注意:在IntelliJ中,能够多次声明相同的变量,我没有看到错误,但是在访问IDE时将错误显示为"无法解析变量",那么多次声明相同的变量有什么用?

在 repl 中,经常会发生实验和原型设计,重新定义 val 通常不是错误,而是有意为之。

优先顺序采用您键入最终成功的内容。

scala> val a: Int = 7
a: Int = 7
scala> val a: Int = "foo"
<console>:12: error: type mismatch;
 found   : String("foo")
 required: Int
       val a: Int = "foo"
                    ^
scala> a
res7: Int = 7

如果您不确定某个名称是否已在使用中,您只需键入名称(如我的情况a(并获得反馈。对于未声明的值,您将获得:

scala> b
<console>:13: error: not found: value b
       b
       ^

但是,如果使用:pas技术粘贴代码块,则冲突中的多个名称将不起作用,并且整个块将被丢弃。

最新更新