Scala很多地方相较于Java来说都很简洁,但是正是如此,导致有的地方可能理解比较复杂。 _ 在Scala中用处比较多,下面就来简单介绍一下各种用法。
类似与Java的 *
scala中,类的属性要给初始值,不然会判断错误,在java中默认会赋予初始值
var age : Int = _ // _下划线就是默认值,注意: 在使用 _ 赋默认值时,需要指明变量类型
访问元组时,和值一起使用表示第几个元素
//获取第一个元素 元组名._1 //获取第二个元素 元组名._2Array(0,_*)匹配数组以0开始
匹配每个元素,得出满足条件的列表
替换函数的参数 函数参数只在函数中出现一次,可以使用下划线代替
//val res = lines.flatMap((s: String) => s.split(" ")) val res = lines.flatMap(_.split(" "))用于模式匹配中默认匹配项 如果所有case 都不匹配,则会执行case _ 分支,类似与Java 中的default 语句
在case校验的时候, 变量没有被使用, 则可以用_替代
def main(args: Array[String]): Unit = { val a:Any = 1.0 val result = a match { case x:String => s"${x}是String类型的数据" case x:Double => s"${x}是Double类型的数据" case x:Int => s"${x}是Int类型的数据" case _ => "未匹配" } // 在case校验的时候, 变量没有被使用, 则可以用_替代. val result2 = a match { case _:String => "String" case _:Double => "Double" case _:Int => "Int" case _ => "未匹配" } println(result) println(result2) }将函数直接赋值给一个变量,但是不执行该函数 _ 将方法转换为了一个函数
def method1(x:Int,y:Int):Int = x+y val f2 = method1 _=> 等价于 java swtich 的 :
scala> val x = 10; val y = 20 x: Int = 10 y: Int = 20 scala> val max = x > y match { case true => x case false => y } max: Int = 20