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 的两倍!
相关推荐
AI人工智能+电脑小能手13 小时前
【大白话说Java面试题】【Java基础篇】第9题:HashMap根据key查询元素的时间复杂度是多少
java·开发语言·数据结构·后端·面试·哈希算法·哈希表
invicinble13 小时前
对于java面向对象的知识
java·开发语言
2501_9307077813 小时前
使用C#代码在 PowerPoint 中创建组合图表
开发语言·c#·powerpoint
干洋芋果果13 小时前
前端学python
开发语言·前端·python
小谢小哥13 小时前
52-熔断降级详解
后端·架构
FOREVER-Q13 小时前
基于 Vite 的前端 SDK 工程化设计与模块化构建实践
开发语言·前端·javascript
invicinble14 小时前
java面向对象的学习主线
java·开发语言·学习
SDAU200514 小时前
Arduino编程CH552
c语言·开发语言·单片机
篮子里的玫瑰14 小时前
Python与网络爬虫——列表与元组
开发语言·爬虫·python
桌面运维家14 小时前
vDisk虚拟磁盘隐藏指定系统操作指南
java·开发语言