옵션의지도를 접을 때 짧은 손이 있는지 궁금합니다. 이 문제를 해결하려면 예를Scala, collapsing 옵션의 옵션
def divideByThree(x:Int) = if (x == 0) None else Some(x/3)
val result = Some(6) map (divideByThree(_))
resut:Option[Option[Int]] = Some(Some(2))
위해 나는 약간 무거운가는 것 같습니다
val result = Some(6) match {
case Some(i) => divideByThree(i)
case None => None
}
을한다. Option에 대해 암시 적 함수를 만들면 mapOption을 처리 할 수 있지만 생각하지 않은 것이 더 좋은지 궁금합니다.
def divideByThree(x:Int) = if (x == 0) None else Some(x/3)
val opx = None // Or: Some(10)
val mapped = opx.flatMap(divideByThree)
println(mapped)
[모나드 재발견] (http://blog.sigfpe.com/2006/08/you-could-have-invented-monads-and.html)! 'flatMap' /'mapOption'과 같은 함수를 제공하는 중첩 구조를 무너 뜨릴 수있는 능력은 모나드를 구성하는 것의 절반이며, 값 (여기서는'Some')을 삽입하는 방법을 제공합니다 (그리고 후자에서는 'map' 연산). –