Тип списка принимает параметры типа (ошибка компиляции в игре) - PullRequest
0 голосов
/ 04 февраля 2020

В настоящее время я изучаю основы RESTFUL API с помощью Play, и у меня возникают проблемы: я следую некоторому давнему учебному пособию и думаю, что мне не удается с правильным scala синтаксисом! нужна помощь, спасибо вот скриншот ошибки

 package controllers

import play.api.libs.json.Json
import javax.inject.Inject
import play.api.Configuration
import play.api.mvc.{AbstractController, ControllerComponents}

import scala.concurrent.ExecutionContext


class PlacesController @Inject()(cc: ControllerComponents)(implicit assetsFinder: AssetsFinder, ec: ExecutionContext, configuration: Configuration)
  extends AbstractController(cc) {


  case class PlacesController(id: Int, name: String)

  val thePlaces: List = List(
    thePlaces(1, "newyork"),
    thePlaces(2, "chicago"),
    thePlaces(3, "capetown")
  )

  implicit val thePlacesWrites = Json.writes[PlacesController]

  def listPlaces = Action {
    val json = Json.toJson(thePlaces)
    Ok(json)
  }}

Ответы [ 2 ]

0 голосов
/ 05 февраля 2020

Наконец-то получил ответ, надеюсь, это поможет другому человеку в будущем !!

class PlacesController @Inject()(cc: ControllerComponents)(implicit assetsFinder: AssetsFinder, ec: ExecutionContext, configuration: Configuration)
  extends AbstractController(cc) {


  case class PlacesController(id: Int, name: String)

  val thePlaces: List[(Int, String)] = List(
    (1, "newyork"),
    (2, "chicago"),
    (3, "capetown")
  )

  implicit val thePlacesWrites = Json.writes[PlacesController]

  def listPlaces = Action {
    val json = Json.toJson(thePlaces)
    Ok(json)
  }


}
0 голосов
/ 04 февраля 2020

С вашим кодом довольно много проблем. Вы определяете thePlaces, одновременно вызывая thePlaces в правой части определения.

Кроме того, ваше название сбивает с толку.

Попробуйте это:

final case class Place(id: Int, name: String)

object Place {
  implicit val placeWrites = Json.writes[Place]
}

class PlacesController ... {

  val thePlaces: List[Place] = List(
    Place(1, "newyork"),
    Place(2, "chicago"),
    Place(3, "capetown")
  )

  def listPlaces = Action {
    val json = Json.toJson(thePlaces)
    Ok(json)
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...