我想鏈接在斯卡拉期貨,但它給了我錯誤的返回類型。鏈斯卡拉期貨返回類型
我有以下幾種方法:
def getOneRecordByModel(x:DirectFlight): Future[Option[FlightByDetailModel]] = {
select.allowFiltering().where(_.from eqs x.from).and(_.to eqs x.to).and(_.departure eqs x.departure).and(_.arrival eqs x.arrival).and(_.carrier eqs x.airline).and(_.code eqs x.flightCode).one()
}
def getRecordByUUID(x:FlightByDetailModel): Future[Option[FlightByUUIDModel]] = {
select.allowFiltering().where(_.uuid eqs x.uuid).one()
}
def getUUIDRecordByModel(x:DirectFlight): Future[Option[FlightByUUIDModel]] = {
getOneRecordByModel(x) andThen {
case Success(Some(flight)) => getRecordByUUID(flight)
case Success(x) => Success(x)
case Failure(x) => Failure(x)
}
}
但現在我得到的錯誤是,getUUIDRecordByModel
返回類型爲Future[Option[FlightByDetailModel]]
如何正確地把它們連?
當你使用和然後你不改變返回類型。你想要flatMap或map取決於另一種方法的返回類型。 – monkjack 2014-09-04 19:31:44
'和Then' combinator純粹是爲了副作用。它始終返回它未被調用的「未來」,保持不變。正如其他人所說,「map」和/或「flatMap」應該是你正在尋找的。 – cmbaxter 2014-09-04 19:46:50