前提
ScalaのFuture型のawait/readyの苦痛度が高い。
歴史的経緯・設計者の間隔もあってなぜかFuture型の外にawait/readyが実装されている1。
val futureInt = Future(42)
Await.result(futureInt, Duration.Inf)
ソリューション
以下のようにより自然に書ける。
val futureInt = Future(42)
futureInt.safeResult(Duration.Inf)
implicitを使えば毎回最大待機時間を渡す手間も減らせる。
implicit val atMost: Duration = Duration.Inf
val futureInt = Future(42)
futureInt.safeResult
-
この表現は厳密には語弊がある。詳しくはAwaitable型参照 ↩