тема в которой разобраться не могу
                  
                  
                  
                  
                  
                  Имеется вот такая штука (запускаю в 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) => {
                  
                  
                  
                  
                  
                  Кто-нибудь поможет?
                  
                  
                
очень больно глазкам читать разъехавшийся код с мобилки. Попробуйте скасти, есть в описании канала
Какая версия компилятора у тебя? В скасти последняя по дефолту
Обсуждают сегодня