Scala Akka类型未指定的值参数

时间:2019-05-05 21:30:36

标签: scala list akka

我在Akka和Scala中都有一个REST应用程序 有一个路径为ID的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 [产品]

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)    
}

所以我的问题是,我如何接收带有ID的产品并将其添加到购物篮列表中?

1 个答案:

答案 0 :(得分:1)

您会收到此错误,因为find返回了Option[Product]。 您需要做的是-

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

foreach取出Option并给您产品实例(如果存在)。