Scala - conversion from for-comprehension to map, flatMap
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def getProduct(id: String): Try[Product]
def getPrice(product: Product): Try[Price]
def calculateProductPrice(product: Product, price: Price): Try[Price]
for {
product <- getProduct("1234")
price <- getPrice(product)
calculatedPrice <- calculateProductPrice(product, price)
if (calculatedPrice > 1000)
} yield (product, calculatedPrice)
getProduct("1234").flatMap{ product =>
getPrice(product).flatMap{ price =>
calculateProductPrice(product, price).filter { p => p > 1000 }
.map{ p => (product, p) }
}
}