scala> val a1 = scala.concurrent.Promise[Int]
a1: scala.concurrent.Promise[Int] = scala.concurrent.impl.Promise$DefaultPromise@10d59286
我无法理解如何在上面创建DefaultPromise的实例。可以理解的是,在下面的示例中,()
调用了apply()
并创建了DefaultPromise
scala> val a2 = scala.concurrent.Promise[Int]()
a2: scala.concurrent.Promise[Int] = scala.concurrent.impl.Promise$DefaultPromise@140e5a13
答案 0 :(得分:3)
我无法理解如何在
之上创建DefaultPromise实例
由于您明确地将类型参数([Int]
)传递给调用(感谢@Jasper以进行说明),编译器会将调用视为您调用Promise.apply[Int]()
,因为object不能有类型参数。
我们可以看到这个探索代码。如果我们调用Promise[Int]
,编译器就会对话:
private[this] val res2: scala.concurrent.Promise[Int] = scala.concurrent.Promise.apply[Int]();
相反,如果我们不提供类型参数,我们会Promise.type
:
private[this] val res3: concurrent.Promise.type = scala.concurrent.Promise;