我怎样才能改变这个:
Await.result(purchase, 5 seconds)
为了能够用下面的方式写出相同的语句:
purchase.await(5 seconds)
只是想学习如何通过编写我自己的自定义 dsl 来重写我的一些代码。
最佳答案
您可以创建自己的隐式类:
import scala.concurrent.{Await, Awaitable}
import scala.concurrent.duration.Duration
object syntax {
object await {
implicit class AwaitableOps[T](private val awaitable: Awaitable[T]) extends AnyVal {
@inline
final def await(atMost: Duration): T =
Await.result(awaitable, atMost)
}
}
}
你可以这样使用:
import syntax.await._
purchase.await(5.seconds) // Note the dot. The postFix operator syntax is discouraged.
关于scala - 编写我自己的语法糖函数以使用 Await.result,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60456103/