【发布时间】:2022-08-05 21:10:36
【问题描述】:
在我的场景中,有三种类型:A、B 和 C,其中 C 是 A 的子类型。
class C extends A
val a: Array[A] = ...
val b: Array[B] = ...
我一直在尝试先压缩a 和b,然后根据第一个元素的类型过滤结果,但似乎我在这里遗漏了一些东西。
a.zip(b).filter(_: (A, B) => _._1.isInstanceOf[C]
这似乎不起作用,因为 Scala 完全忽略了我在左侧的 _ 类型声明,而在右侧将 _ 键入为 Array[(A, B)]。
因为我知道isInstanceOf 不是scala 的做事方式,所以我也考虑过像这样使用collect:
a.zip(b).collect{case x: (C, B) => x}
但这不起作用,因为 scala 确实期望这里的类型 (A, B) ,使得类型匹配无用。
我已经习惯了 Python 编程,所以也许我的方法不在这里。将不胜感激任何指向正确方向的指针。
标签: scala