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 的两倍!
相关推荐
大鸡腿同学20 小时前
AI 知识库搜索不准?问题出在分块
后端
夕颜11121 小时前
Multica 使用心得介绍
后端
代码中介商1 天前
C++左值与右值:核心判断法则详解
开发语言·c++
星轨zb1 天前
LangChain4j 集成 Spring Boot:会话记忆 NPE 的根源与 ChatMemoryProvider 正确配置
java·spring boot·后端·langchain4j
JAVA9651 天前
JAVA面试-并发篇 05-并发包AQS队列实现原理是什么
java·开发语言·面试
混凝土拌意大利面1 天前
TG-BOOT springboot 功能集散开发框架(AI 协作友好)
人工智能·spring boot·后端
Halo_tjn1 天前
反射与设计模式1
java·开发语言·算法
珊瑚里的鱼1 天前
手撕单例模式中的饿汉模式和懒汉模式,懒汉模式还要再多加一个C++11版本的
开发语言·c++·单例模式
_不会dp不改名_1 天前
python-opencv环境搭建
开发语言·python·opencv
小村儿1 天前
连载12- Cluade code 的MCP 到底还用不用
前端·后端·ai编程