有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何修复scala中的不匹配错误,其中发现:Seq[scala.collection.immutable.Seq required:scala.collection.Seq?

这就是错误:

<console>:123: error: type mismatch;
 found   : Seq[scala.collection.immutable.Seq[scalismo.geometry.Landmark[scalismo.geometry._3D]]]
 required: scala.collection.Seq[scalismo.geometry.Landmark[scalismo.geometry._3D]]
            val rigidTrans = LandmarkRegistration.rigid3DLandmarkRegistration(landmarks, reflandmarks.toSeq)

下面是代码片段:

val alignedSet = toAlign.map { mesh =>    
  val landmarks = pointIds.map{id => Landmark("L_"+id, mesh.point(PointId(id)))}
  val rigidTrans = LandmarkRegistration.rigid3DLandmarkRegistration(landmarks, reflandmarks.toSeq)
  mesh.transform(rigidTrans)
}

共 (1) 个答案

  1. # 1 楼答案

    如果仔细观察,简而言之,错误是found Seq[Seq[X]]; required Seq[X]。虽然您的帖子没有显示控制台中的错误位置(插入符号^{),但我怀疑这是针对^{)。所以reflandmarks.toSeq给出了Seq[Seq[X]]。要展平嵌套序列,可以使用flatten,因此使用reflandmarks.toSeq.flatten可能有效

    请注意,由于子类型,在需要collection.Seq的地方传递参数collection.immutable.Seq始终是可能的,因此这与实际问题无关