在Scala中,变量在声明时必须显示指定,可以使用下划线对变量进行初始化。而且该语法只适用于成员变量,不适用于局部变量。例:

对于Int来说,它是0。
对于Double来说,它是0.0
对于引用类型,它是null
导包引入时使用_导入该包下所有内容,类比Java中的*。例如:

在Scala中方法不是值,而函数是。所以一个方法不能赋值给一个val变量,而函数可以。方法可以转换为函数赋值给变量,例:

模式匹配中可以用下划线来作为Java中default的类比使用,也可以在匹配集合类型时,用于代表集合中元素,例:


向函数或方法传入可变参数时不能直接传入Range或集合或数组对象,需要使用:_*转换才可传入
例如定义一个变长参数的方法sum,然后计算1-5的和,可以写为
scala> def sum(args: Int*) = {
| var result = 0
| for (arg <- args) result += arg
| result
| }
sum: (args: Int*)Int
scala> val s = sum(1,2,3,4,5)
s: Int = 15
但是如果写成这种方式就会报错
scala> val s = sum(1 to 5)
<console>:12: error: type mismatch;
found : scala.collection.immutable.Range.Inclusive
required: Int
val s = sum(1 to 5)
^
这种情况必须在后面写上: _*将1 to 5转化为参数序列
scala> val s = sum(1 to 5: _*)
s: Int = 15
下面代码分别将arr中的第一个和第二个值赋给first和second
scala> val arr = Array(1,2,3,4,5)
arr: Array[Int] = Array(1, 2, 3, 4, 5)
scala> val Array(first, second, _*) = arr
first: Int = 1
second: Int = 2