scala語言中下劃線的應用有特別的意思,下面通過一個程序來總決一下這個些應用。
/**
* 應用一:這里的math._就相當于Java中的math.*;
*/
import scala.math._
object HelloUnderlined {
/**應用二:這里的下劃線代碼的是 null 和null的作用是一樣的*/
var name:String=_
def main(args: Array[String]) {
min(100, 12)
/**
* 應用三:當函數接收的參數不定長的時候,假如你想輸入一個隊列
* 可以在一個隊列后加入“:_*”,因此,這里的“1 to 5”也可以改寫為:“Seq(1,2,3,4,5)”
*/
println("----應用三------")
val result=sum(1 to 5:_*)
println(result)
val result2=sum(Seq(1,2,3,4,5):_*)
println(result2)
/**
* 應用四:集合中使用(最常用的地方)
* 這里的下劃線代表了集合中的“某(this)”一個元素。這個用法很常見,在foreach等語句中也可以使用。
*/
println("----應用四------")
(1 to 3).map(_*2).foreach(println)
/**
* 應用五:模式匹配中
* 在這里相當于“others”的意思
*/
println("----應用五------")
val value ="ab"
val r1 = value match{
case "a" => 1
case "b" => 2
case _ =>"other"
}
println(r1)
/**
* 應用六:表示隊列
*/
println("----應用六------")
val v2 = 1 to 5
val r2 = v2 match{
case Seq(_,_*) => 1
case _ => "result"
}
println(r2)
/**
* 應用七:“偏函數”用法
*/
println("----應用七------")
val set = setFunction(3.0, _:Double)
println(set(7.1))
/**
* 應用八:元組Tuple中使用
*/
println("----應用八------")
val value8=("java", 2, 3)
println(value8._1)
println(value8._2)
println(value8._3)
}
def sum(parms : Int*) = {
var result = 0
for(parm <- parms) result += parm
result
}
def setFunction(parm1:Double,parm2:Double): Double = parm1+parm2
}