У меня есть эта проблема, с которой я должен работать каждый раз. Я не могу сопоставить что-то, что содержится в будущем, используя для понимания.
Пример:
import scala.concurrent.ExecutionContext.Implicits.global
import scala.concurrent.Future
val f = Future( List("A", "B", "C") )
for {
list <- f
e <- list
} yield (e -> 1)
Это дает мне ошибку:
error: type mismatch;
found : List[(String, Int)]
required: scala.concurrent.Future[?]
e <- list
^
Но если я это сделаю, он отлично работает:
f.map( _.map( (_ -> 1) ) )
Должен ли я не делать этого, используя для понимания, причина, по которой он работает в моем другом примере, что я не планирую? Я использую Scala 2.10.0.