天天看點

Scala系列之樣例類_Option_偏函數

  在Scala中Option類型樣例類用來表示可能存在或也可能不存在的值(Option的子類有Some和None)。Some包裝了某個值,None表示沒有值。

object OptionDemo {

  def main(args: Array[String]) {

    val map = Map("a" -> 1, "b" -> 2)

    val v = map.get("b") match {

      case Some(i) => i

      case None => 0

    }

    println(v)

    //更好的方式

    val v1 = map.getOrElse("c", 0)

    println(v1)

  }

}

偏函數

被包在花括号内沒有match的一組case語句是一個偏函數,它是PartialFunction[A, B]的一個執行個體,A代表參數類型,B代表傳回類型,常用作輸入模式比對

object PartialFunctionDemo {

  def f: PartialFunction[String, Int] = {

    case "one" => 1

    case "two" => 2

   // case _ => -1

    //調用f.apply("one")

    println(f("one"))

    println(f.isDefinedAt("three"))

    //抛出MatchError

    println(f("three"))

}String INTERPOLATION(字元串插值)(備選)

用途:處理字元串  類型:

s:字元串插值

f:插值并格式化輸出

raw:對字元串不作任何變換的輸出

Scala 2.10.0之後,引入一種新的建立字元串的機制,即 String Interpolation. 它允許使用者直接在字元串中嵌入變量的引用。

val name="James"

println(s"Hello,$name") // Hello, James

字元串插值的位置也可以放表達式,如下:

println(s"1 + 1 = ${1 + 1}")// 1 + 1 = 2

插值f 可以對字元串進行格式化,類似printf:

val height = 1.9d

val name = "James"

println(f"$name%s is $height%2.2f meters tall")  // James is 1.90 meters tall

raw類似于s,但是raw對字元串内容不作任何的轉換:

scala> s"anb"

res0: String =

a

b

scala> raw"anb"

res1: String = anb