Scala编程与实践深度技术

scala语言中的下划线

2016-12-18  本文已影响62人  代码足迹

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


}

上一篇 下一篇

猜你喜欢

热点阅读