тема в которой разобраться не могу
Имеется вот такая штука (запускаю в scalasheet)
import scala.concurrent.ExecutionContext.Implicits.global
import scala.concurrent.{Promise, Future, Await}
import scala.concurrent.duration._
import java.util.concurrent.CompletableFuture
import java.util.function.Supplier
val supp = new Supplier[Int] {
override def get(): Int = {
Thread.sleep(500)
20
}
}
val cf = CompletableFuture.supplyAsync(supp)
def javaCFtoScalaF[A](cf: CompletableFuture[A]): Future[A] = {
val promise = Promise[A]
cf.handle {
(a, ex: Throwable) => {
Option(a).
map(r => promise.success(r)).
getOrElse(promise.failure(ex))
}
}
promise.future
}
val sf = javaCFtoScalaF[Int](cf)
sf.isCompleted
sf.value
Await.result(sf, 1.second)
Выдаёт
Error:(19, 6) no type parameters for method handle: (x$1: java.util.function.BiFunction[_ >: A, Throwable, _ <: U])java.util.concurrent.CompletableFuture[U] exist so that it can be applied to arguments (java.util.function.BiFunction[A,Throwable,scala.concurrent.Promise[A]])
--- because ---
argument expression's type is not compatible with formal parameter type;
found : java.util.function.BiFunction[A,Throwable,scala.concurrent.Promise[A]]
required: java.util.function.BiFunction[_ >: A, Throwable, _ <: ?U]
Note: A <: Any, but Java-defined trait BiFunction is invariant in type T.
You may wish to investigate a wildcard type such as `_ <: Any`. (SLS 3.2.10)
cf.handle {
Error:(20, 24) type mismatch;
found : java.util.function.BiFunction[A,Throwable,scala.concurrent.Promise[A]]
required: java.util.function.BiFunction[_ >: A, Throwable, _ <: U]
(a, ex: Throwable) => {
Кто-нибудь поможет?
очень больно глазкам читать разъехавшийся код с мобилки. Попробуйте скасти, есть в описании канала
Какая версия компилятора у тебя? В скасти последняя по дефолту
Обсуждают сегодня