我有两个 Tuple2[String, String] 我想检查一下它们是否没有重叠的坐标。下面是一个例子:
Tuple2[String, String]
def checkOverlapping(t1: (String, String), t2: (String, String)) = t1._1 == t2._1 || t1._1 == t2._2 || t1._2 == t2._1 || t1._2 == t2._2
它能用,但看起来非常难看。万一 Tuple4[String, String, String, String] 用手手动检查所有碰撞似乎很疯狂。
Tuple4[String, String, String, String]
有简明的方法吗 TupleX 属于 String S?
TupleX
String
def checkOverlapping(x: Product, y: Product): Boolean = { val s = x.productIterator.toSet y.productIterator.exists(s) }
这适用于任意arity的元组,也适用于arity不同且类型不同的情况。 String 但有些别的。实际上,它适用于所有种类的事物,包括 case -课程。类型安全基本上不在窗口,但是的-它很简洁。如果只需要特定类型的元组,则替换 Product 按照这些元组的类型,这将是恢复类型安全性的简单方法。
case
Product