方法转换为函数
例如:
def m1(a:Int,b:Int)=a+b
val f1=m1(3,2)//(这个是赋值)
val f1=m1 _ //(这里将方法转变成函数)
用于导包引入
导包引入时使用_导入该包下所有内容,类比Java中的*。例如:
//java
import java.until.*
//scala
import java.utnil._
Scala类中成员变量初始化
class Test{
//String类型的默认值为null 不适合局部变量
var s: String = _
}
用于模式匹配
def match1(x:Int):String={
x match {
case 1=>"one"
case 2=>"two"
case _=>"many"
}
}
def match6(arr:Array[String]):Unit={
arr match{
case Array("kb11")=>println("fsfsfsd")
case Array(es,sf)=>println(es,sf)
case Array("kb12",_*)=>println("k12")
case Array(str1,str2,"BB")=>println(arr(0),arr(1),"BB")
case _=>println("who are you")
}
}
2.集合中的每一个元素
例如:
val list=List(1,2,3,4)
val list1=list.map(_ * 10)
类型通配符
public static void show(List<?> list){
for(Object elem: list){
System.out.println(elem + " ");
}
}
对应的Scala版本为:
def show(list: List[_]): Unit ={
list.foreach(elem => println(elem + " "))
}
用于访问tuple元素
val t = (1, 2, (7, 9))
println(t._1, t._2, t._3._1, t._3._2)
部分函数
// def showMsg(title: String, content: String, height: Double): Unit = {
// println(title + " " + content + " " + height)
// }
//
// showMsg("jinggao", "当前河床水位线", 19.8)
// val title: String = "警告"
//
// def showAlarms = showMsg(title, _: String, _: Double)
// showAlarms("部分函数 当前河床水位线", 20.1)