Scala提取器使用模式匹配

在实例化一个类时,可以带上0个或者多个的参数,编译器在实例化时会调用 apply 方法。我们可以在类和对象中都定义 apply 方法。

unapply 用于提取指定查找的值,它与 apply 的操作相反。当在提取器对象中使用 match 语句是,unapply 将自动执行,如下所示:

复制代码
object Test {
   def main(args: Array[String]) {
     
      val x = Test(5)
      println(x)

      x match
      {
         case Test(num) => println(x + " 是 " + num + " 的两倍!")
         //unapply 被调用
         case _ => println("无法计算")
      }

   }
   def apply(x: Int) = x*2
   def unapply(z: Int): Option[Int] = if (z%2==0) Some(z/2) else None
}

执行以上代码,输出结果为:

复制代码
$ scalac Test.scala 
$ scala Test
10
10 是 5 的两倍!
相关推荐
清溪54914 小时前
pgAdmin4 <= 9.1_RCE(CVE-2025-2945)复现
数据库·后端
SOC罗三炮14 小时前
OpenHuman 源码深度解构:一个 Rust 驱动的本地优先 AI 个人助手
开发语言·人工智能·rust
亦暖筑序14 小时前
单模型成本高、风险大?Spring AI多模型路由实战:成本降70%,可用性更稳
java·后端·ai编程
404号扳手14 小时前
Java 进阶知识(二)
java·后端
心怀梦想的咸鱼14 小时前
OpenCode 接入 API 报错 read ECONNRESET:基于环境变量的证书校验绕过方案
开发语言·php
清溪54914 小时前
pgAdmin4后台Restore RCE(CVE-2025-13780)复现
数据库·后端
第五页的你14 小时前
MySQL层级表及表关系
后端
星栈14 小时前
Rust 单二进制部署,真没你想的那么“单”
前端·后端
SamDeepThinking14 小时前
一个业务场景只需要一个ThreadLocal实例
java·后端·程序员
程序大视界14 小时前
【Python系列课程】Python入门教程
开发语言·人工智能·python