用一个例子告诉你 模式在scala中的使用场景

1. 说明

        Scala中很多地方都可以使用模式,并不仅仅是match表达式中

        如果不清楚模式是什么,可以看这里🌰


2. 使用模式同时给多个变量赋值

    // 使用 二元组 给变量赋值
    val (id, name) = (10, "小明")
    println(s"$id : $name") // 10 : 小明

    // 使用 样例类 给变量赋值
    case class cPerson(id: Int, name: String, age: Int)
    val p = cPerson(10, "张飞", 28)
    val cPerson(pid, pname, page) = p
    println(s"${pid} ${pname} ${page}") // 10 张飞 28

3. 使用模式定义函数字面量&偏函数字面量

在Scala中 允许使用 case分支 来定义函数字面量或者偏函数字面量

如果不清楚什么偏函数,可以看这里🌰

    // 定义 普通函数字面量(标准格式)
    val sum1: Option[Int] => Int = (x: Option[Int]) => x match {
      case Some(a) => a
      case None => 0
    }

    // 定义 普通函数字面量(省略格式)
    val sum2: Option[Int] => Int = {
      case Some(x) => x
      case None => 0
    }

    sum1(Option(10))
    sum1(None)

    // 定义 偏函数字面量
    val psum: PartialFunction[Option[Int], Int] = {
      case Some(x) => x
      case None => 0
    }


4. 在for表达式中使用模式

    val list = List((1, "刘备"), (2, "关羽"), (3, "张飞"), (4, "???"))
    val map = Map(1 -> "刘备", 2 -> "关羽", 3 -> "张飞", 4 -> "赵云")

    // for表达式 使用变量模式
    for ((id, name) <- list) {
      println(s"${id}:${name}")
    }

    for ((id, name) <- map) {
      println(s"${id}:${name}")
    }

    val result: List[Option[String]] = List(Option("苹果"), None, Option("橘子"), Option("香蕉"))

    // 注意 只会获取到匹配到的值
    for (Some(i) <- result) {
      println(i)
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值