基本

case后面值要和调用模式匹配的元祖对上

  1. val t: Any = ("lisi", 20)
  2. t match {
  3. case (name, age) => println(name)
  4. }

输出

lisi

匹配类型: 元祖的第一个值必须是Sting类型的才匹配,否则不匹配

    val t: Any = ("lisi", 20)
    t match {
      case (name: String, age) => println(name)
    }

匹配元祖里面的值

下面两种方式效果是一样的,建议用方式1
方式1

object Pattern1 {
  def main(args: Array[String]): Unit = {
    val (a, b): (Int, String) = foo()
    println(a)
    println(b)
  }
  //返回一个元祖
  def foo() = (10, "lisi")
}

方式2:

object Pattern1 {
  def main(args: Array[String]): Unit = {
    val a: (Int, String) = foo()
    println(a._1)
    println(a._2)
  }
  //返回一个元祖
  def foo() = (10, "lisi")
}

取List里面的元组

val list = List((1, 2), (10, 20), (100, 200))
    for (kv <- list) {
      println(kv._1 + "--" + kv._2)
        }

输出:
1—2
10—20
100—200