【发布时间】:2016-06-28 20:39:12
【问题描述】:
我有一个案例类Pair(a: Int, b: Int),它代表一对 2 个整数。为了有Pair(2, 5) == Pair(5, 2),我重写了equals方法如下。
override def equals(that: Any): Boolean = that match {
case Corner(c, d) => (a == c && b == d) || (a == d && b == c)
case _ => false
}
现在等式成立,Pair(2, 5) == Pair(5, 2) 返回真,就像我想要的那样。但是,这在模式匹配时不起作用:
Pair(2, 5) match {
case Pair(5, 2) => print("This is what I want")
case _ => print("But this is what I get")
}
有人可以帮助我吗?我可以/应该这样做吗?有哪些替代方案?我真的不想每次与pair进行模式匹配时都写case Pair(2, 5) | case(5, 2) =>。
【问题讨论】:
-
stackoverflow.com/a/25538287/4541415 这个对相关问题的回答是我最终使用的答案——我强烈建议任何人也看看这个。
标签: scala parameters pattern-matching