【发布时间】:2013-11-23 14:58:02
【问题描述】:
trait Future[T]{
def onComplete( callback: Try[T] => Unit )(...):Unit
}
trait Socket{
def sendToEurope( packet:Array[Byte] ):Future[Array[Byte]]
}
val c:Future[Array[Byte]] = packet onComplete {
case Success(p) => socket.sendToEurope(p)
....
}
这是从 coursera“反应式编程”的课堂笔记中引用的示例
我试图理解这里的方法签名。 onComplete 采用 Try => Unit 函数类型,而括号部分是 Success=>FutureType。我看不出这两种类型在这里是如何兼容的。考虑方差:Function1[-A,+R] 这使得 Success 兼容,但我在这里仍然看不到 Future 与 Unit 的协变。
谁能给我解释一下?
【问题讨论】:
标签: scala