天天看点

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