Scala Akka Тип неопределенных значений параметров - PullRequest
0 голосов
/ 06 мая 2019

У меня есть приложение REST в Akka и Scala, есть путь AddToBasket с идентификатором. Я хочу добавить продукт из списка продуктов в BasketList, чтобы покупатель мог добавить продукт в свою корзину.Моя проблема:

~(path("AddToBasket" / IntNumber) & post) { number =>
  //I get the selected Product with Product id
  val product1 = Product.PRODUCT_LIST.find(_.id == number)
  if (product1.isDefined) {
    println(product1.toString())

    //here I want to add the found product to the Basket
    //but always an unspecified value parameters error
    basket ! AddToBasket(Product(product1))
    complete(Basket.BASKET_LIST ::= product1)

  } else complete("Not Found ")
  println(Basket.BASKET_LIST.toString())
  complete(s"Added Product ${product1} to Basket")
}

Существует объект Корзина с пустым BASKET_LIST [Product]

object Basket {
  var BASKET_LIST = List.empty[Product]

  def apply(basketId: Int, customerRef: ActorRef)(
      implicit system: ActorSystem): ActorRef =
    system.actorOf(Props(classOf[Basket], basketId, customerRef))

  case class AddToBasket(product: Product)    
}

Так что мой вопрос заключается в том, как я могу получить Продукт с идентификатором и добавить его всписок корзины?

1 Ответ

0 голосов
/ 06 мая 2019

Вы получаете эту ошибку, потому что find возвращает Option[Product].Что вам нужно сделать, это -

product1.foreach{product => 
    basket ! AddToBasket(product)
    complete(Basket.BASKET_LIST ::= product)
}

foreach достает Option и выдаст вам экземпляр продукта (если существует).

...