scala語(yǔ)言中下劃線的應(yīng)用有特別的意思,下面通過(guò)一個(gè)程序來(lái)總決一下這個(gè)些應(yīng)用。
/**
* 應(yīng)用一:這里的math._就相當(dāng)于Java中的math.*;
*/
import scala.math._
object HelloUnderlined {
/**應(yīng)用二:這里的下劃線代碼的是 null 和null的作用是一樣的*/
var name:String=_
def main(args: Array[String]) {
min(100, 12)
/**
* 應(yīng)用三:當(dāng)函數(shù)接收的參數(shù)不定長(zhǎng)的時(shí)候墙歪,假如你想輸入一個(gè)隊(duì)列
* 可以在一個(gè)隊(duì)列后加入“:_*”吗氏,因此红选,這里的“1 to 5”也可以改寫為:“Seq(1,2,3,4,5)”
*/
println("----應(yīng)用三------")
val result=sum(1 to 5:_*)
println(result)
val result2=sum(Seq(1,2,3,4,5):_*)
println(result2)
/**
* 應(yīng)用四:集合中使用(最常用的地方)
* 這里的下劃線代表了集合中的“某(this)”一個(gè)元素岭接。這個(gè)用法很常見(jiàn)密幔,在foreach等語(yǔ)句中也可以使用楔脯。
*/
println("----應(yīng)用四------")
(1 to 3).map(_*2).foreach(println)
/**
* 應(yīng)用五:模式匹配中
* 在這里相當(dāng)于“others”的意思
*/
println("----應(yīng)用五------")
val value ="ab"
val r1 = value match{
case "a" => 1
case "b" => 2
case _ =>"other"
}
println(r1)
/**
* 應(yīng)用六:表示隊(duì)列
*/
println("----應(yīng)用六------")
val v2 = 1 to 5
val r2 = v2 match{
case Seq(_,_*) => 1
case _ => "result"
}
println(r2)
/**
* 應(yīng)用七:“偏函數(shù)”用法
*/
println("----應(yīng)用七------")
val set = setFunction(3.0, _:Double)
println(set(7.1))
/**
* 應(yīng)用八:元組Tuple中使用
*/
println("----應(yīng)用八------")
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
}