私はスカラ先物の高次関数を理解しようとしています。私はこのコードを書きましたScala Future oncompleteが完了しませんか?
import scala.concurrent.Future
import scala.util.{Failure, Success}
import scala.concurrent.ExecutionContext.Implicits.global
object App30 extends App {
def getMilk(): String = {
val ans = "5 gallons of milk"
ans
}
def getFlour(): String =
{
val ans= "2 oz of flour"
ans
}
val milkFuture = Future { getMilk() }
val flourFuture = Future { getFlour() }
val resultFut = {
for {
milk <- milkFuture
flour <- flourFuture
result = milk + flour
} yield result
}
resultFut.onComplete{
case Success(answer) => println("The result of getting ingridents is " + answer)
case Failure(exception) => println("could not access future value")
}
}
私の問題は、「取得の結果」という文字列を取得できないことです。デバッガがonCompleteで停止し、成功したケースに進まないことがわかります。
どこが間違っているのか分かりますか?これは愚かな間違いだった場合は、親切にそれを指摘し、その後私はその質問を取り下げます。そうでなければ、新しい概念を理解するためのコンセプトを説明してください。あなたが明示的に未来をブロックする必要が
おかげ
これには、https://stackoverflow.com/q/21188012/1296806など多くの重複があります。関連するご質問https://stackoverflow.com/q/45447679/1296806 –
その他の質問があります副作用が完了していない場合にプロセスが終了します。しかし、私はオフィスにいて、彼らを探すことはできません。 –