如何用多个参数列表来匹配类?

  • 回答 (2)
  • 关注 (0)
  • 查看 (20)

我有以下类:

class DateTime(year: Int, month: Int, day: Int)(hour: Int, minute: Int, second: Int)

怎么使用unapply方法,我想匹配以下内容:

dt match {
  case DateTime(2012, 12, 12)(12, _, _) => // December 12th 2012, 12 o'clock
  /* ... */
}

我试过这个:

def unapply(dt: DateTime) = 
  Some((dt.year, dt.month, dt.day),(dt.hour, dt.minute, dt.second))

但这不管用。

刺激刺激提问于
红月努力的程序喵回答于
已采纳

scala> case class A(i: Int)(j: Int) { }
defined class A

scala> A(5)(4) match { case A(5) => "Hi" }
res14: java.lang.String = Hi

scala> A(5)(4) == A(5)(9)
res15: Boolean = true

如果它不是CASE类,则可以将unapplication定义为任何您想要的东西,因此它实际上取决于类的实现者。默认情况下,不存在不应用,因此只能在类型上匹配。

如果您想要使用case类特性:

case class Time(hour: Int, minute: Int, second: Int) { }
case class Date(year: Int, month: Int, day: Int) { }
case class DateTime(date: Date, time: Time) { }

scala> val dt = DateTime(Date(2011,5,27), Time(15,21,50))
scala> dt match { case DateTime(Date(2011,_,_),Time(h,m,50)) => println(h + ":" + m) }
15:21

回答过的其他问题

香港主机?

红月努力的程序喵

推荐 LNMP 一键安装包。安装的时候选上 PureFTPd,就可以通过 FTP 访问主机的内容了。域名绑定要看你的域名是在哪解析的,新建一条 A 记录指向主机的公网 IP 就算绑定成功了。

关系型数据库和非关系型数据库的特性以及优缺点?

红月努力的程序喵

腾讯云的云数据库让用户可以轻松在云端部署、使用 MySQL 数据库十分方便,而且比传统的SQL 费用低。

Kafka对实时数据的主要优势是什么?

红月努力的程序喵
Kafka的优点 在这里,我们列出了卡夫卡的一些优势。基本上,这些Kafka优势使Kafka成为我们数据湖实施的理想选择。那么,让我们开始详细了解Kafka的优势: 📷 卡夫卡的利弊 - 卡夫卡的优势 A. 高通量 没有那么大的硬件,Kafka能够处理高速和大容量的数据。此外,能...... 展开详请

求大神帮忙看下云主机,安全组配置了开放全部服务器,但是有一条规则显示拒绝并且不能删除?

红月努力的程序喵

这条记录是兜底用的。按照需求添加其他记录,确保这些记录在那条删不掉的记录“上方”即可。(不知道为啥控制台改版之后不能拖拽修改规则优先级了,要吐槽一下)

无法安装mySQL?

红月努力的程序喵
在 CentOS 7 中,MySQL 已经被默认的 MariaDB 替代。 方案 1:手动安装 mysql-server wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm rpm -ivh...... 展开详请

腾讯云AI有哪些应用?

红月努力的程序喵
腾讯云发布的 AI 安全能力矩阵图,以大数据、机器学习、图计算、知识库等核心技术为基础,发展以安全为导向的社交图谱分析、图像自动识别、知识表达与推理、自然语言处理四大当前热门 AI 领域为组合,形成智能身份鉴定、威胁情报分析、异常流量检测、网络攻击溯源、人机行为识别、恶意图片识别...... 展开详请

关于作者

所属标签

扫码关注云+社区