我在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的产品并将其添加到购物篮列表中?
答案 0 :(得分:1)
您会收到此错误,因为find
返回了Option[Product]
。
您需要做的是-
product1.foreach{product =>
basket ! AddToBasket(product)
complete(Basket.BASKET_LIST ::= product)
}
foreach
取出Option
并给您产品实例(如果存在)。