Scala - ошибка "значение карты не является членом" - PullRequest
0 голосов
/ 29 октября 2018

Используя Scala, я получаю эту ошибку «Карта значений не является членом chemins.Point» точка <- сегмент.в </p>

Вот мой код:

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 голосов
/ 29 октября 2018

Не глядя на chemins API, вы, скорее всего, хотите

for { segment <- segments } yield segment.to

или

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

Попытка использовать segment.to в качестве генератора не имеет смысла, потому что это не коллекция или .map -поддерживаемая сущность.

Также обратите внимание, что это для понимания уменьшается до

segments.map(_.to)
...