Scala - conversion from for-comprehension to map, flatMap
          
             
  less than 1 minute read
          
        
      
      
        
        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) }
  }
}
 |