Home > Software engineering >  Deal with nested for-comprehension and futures in scala (value map is not a member of Any)
Deal with nested for-comprehension and futures in scala (value map is not a member of Any)

Time:12-06

I saw many questions related to mine but none deal with my case.

I want to nest for-comprehension of future like in the code below:

def getVal(v: Int): Future[Double] = {
  Future(scala.math.sqrt(v >> 3))
}

val c = true
val t = for {

  x <- getVal(60)
  y <- getVal(52)
  o <-
    if (c) {
      for {
        a <- getVal(10)
        b <- getVal(5)
      } yield a > b
    } else true

} yield x >= y && o

but my code can't compile I got this error : value map is not a member of Any

I need help, please

CodePudding user response:

Problem is here:

    if (c) {
      for {
        a <- getVal(10)
        b <- getVal(5)
      } yield a > b
    } else true

Because it does (pseudocode):

   if (c) Future[Boolean]
   else Boolean

The code common type is inferred to Any and then you end up with for-comprehension trying to call .map on Any value.

Just wrap true with Future.successful(true).

  • Related