找不到Scala:值错误
我试图在scala shell中执行max函数,但在一个方面出现了错误找不到Scala:值错误,scala,Scala,我试图在scala shell中执行max函数,但在一个方面出现了错误 scala> def max(x: Int, y: Int): Int = { if (x > y) x else y } max: (x: Int, y: Int)Int scala> a =max(10, 20) <console>:14: error: not found: value a ..... Scala版本是2
scala> def max(x: Int, y: Int): Int = {
if (x > y) x
else y
}
max: (x: Int, y: Int)Int
scala> a =max(10, 20)
<console>:14: error: not found: value a
.....
Scala版本是2.11.11,我正在尝试学习Scala,可能我缺少一些基本概念。因为最佳实践是选择不可变的
val
s,而不是可变的var
s
在scala中,所有变量都必须是var或val语言设计的 就这样
Scala变量必须是var或val,不能推断。错误在于您没有将
a
声明为var
或val
var
不能为默认值,因为这违反了最佳实践val
可以是默认值(使用显式var
),但它的设计不同。什么是“推断”?类型可以推断。但是var a=max(10,20)
和var a=max(10,20)
都是可能的。在var a=max(10,20)
之后,你可以做a=100
但是val a=max(10,20)
之后将无法编译。在赋值时自动引入变量似乎是个好主意,但它容易出现范围问题。想象一下这样的代码:if(something){v=0}else{v=1};println(v)
。这也会使许多打字错误被忽视,比如name=“A”;namo=“B”
。这只是scala语法:值必须定义为val a=…
var a=max(10,20)
val a = max(10,20)