Scala-错误“值映射不是成员”

时间:2018-10-29 11:24:24

标签: scala for-loop for-comprehension

使用Scala,我收到此错误“值映射不是chemins.Point的成员” 点<-segment.to

这是我的代码:

package chemins

case class Point(name: String, x: Long, y: Long)

case class Segment(from: Point, to: Point) {
  def distance: Double = {

    math.sqrt((from.x - to.x)*(from.x - to.x) + (from.y - to.y)*(from.y - to.y))
  }

}

case class Path(segments: Vector[Segment]) {

  def length: Double = {

    (for {

      segment <- segments

    } yield segment.distance).sum

  }

  def stops : Vector[Point] = {

    for {
      segment <- segments
      point <-  segment.to
    } yield point
  }


}

从我之前的搜索来看,似乎来自“ to”没有生成器,但我不知道它是否相关的事实。

谢谢!

1 个答案:

答案 0 :(得分:3)

最有可能想要而无需查看chemins API

for { segment <- segments } yield segment.to

for { 
  segment <- segments
  point = segment.to
} yield point

尝试使用segment.to作为生成器没有任何意义,因为它不是集合或.map-pable实体。

还请注意,这种理解会减少为

segments.map(_.to)