我有两个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
Run Code Online (Sandbox Code Playgroud)
它可以工作,但是看起来非常难看。万一Tuple4[String, String, String, String]
手动检查所有碰撞似乎很疯狂。
是否有一种适用TupleX
于String
s 的简洁方法?
def checkOverlapping(x: Product, y: Product): Boolean = {
val s = x.productIterator.toSet
y.productIterator.exists(s)
}
Run Code Online (Sandbox Code Playgroud)
这适用于任意Arity的元组,也适用于Arity不同且类型不是String
其他的情况。实际上,它适用于各种事物,包括case
-class。类型安全性基本上不会出现在窗口之外,但是可以-简洁。如果只对特定类型的元组需要它,那么用Product
那些元组的类型替换将是恢复类型安全的一种简单方法。
归档时间: |
|
查看次数: |
50 次 |
最近记录: |