0

나는 다음과 같은 패턴이 있습니다랩핑 해제 옵션 재생 경로 매개 변수에 함축

  1. 정의 된 일부 선택적 매개 변수 일부 놀이 노선

GET/내/경로 controllers.something.Class.method을 (아마도 : 선택 사항 [Int], 아마 B : Optional [Int])

이 방법에서는 이러한 매개 변수를 사용할 수 있기를 바랍니다. 나는 적절한 패턴을 이해하지 못한다고 느낍니다. 내가 뭘하려는 같은 것입니다 :

blah match { 
    case Some(someCase) => // do something 
    case _ => for { 
     a <- maybeA 
     b <- maybeB 
    } yield { 
     somethingThatReturnsAFuture(a, b) 
    } 
} 

문제는 이해의이 Option[Future[Int]]를 반환한다는 것입니다,하지만 난 Future[Int]를 반환 할 필요합니다. 이해가 끝나면 get을 던질 수 있기를 원하지만 재밌는 냄새가납니다. 실제로 이해가 끝나면 get을 던질 수도 있습니다.

제안 사항?

답변

0

뭔가가 Option 인 경우이 직접 처리 결과는 Option이됩니다. Option을 제거하는 유일한 방법은 None 사례를 정의하는 것입니다.

val resultOpt: Option[Future[Int]] = blah match { ... 
val result: Future[Int] = resultOpt match { 
    case Some(f) => f 
    case None => Future.successful(0) 
} 

getOrElse을 사용하십시오. 동일한 코드, 다른 스타일 :

val resultOpt: Option[Future[Int]] = blah match { ... 
val result: Future[Int] = resultOpt.getOrElse(Future.successful(0)) 

이것에 대해 좀 더 : http://alvinalexander.com/scala/how-to-use-multiple-options-for-loop-comprehension