在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>
此处使用var
,val
和lazy val
所以我想知道
val a = 1
和var a = 2
哪个优先级更高?var
和val
?注意:在IntelliJ中,能够多次声明相同的变量并且我没有看到错误但是在访问IDE时显示错误为“无法解析varibale”所以使用多次声明相同的变量是什么意思?
答案 0 :(得分:2)
在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
技术粘贴代码块,则冲突中的多个名称将不起作用,并且整个块将被丢弃。