169 похожих чатов

Хелло еверибади, У меня тут проблема на тему covariance contrvariance -

тема в которой разобраться не могу

Имеется вот такая штука (запускаю в 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) => {

Кто-нибудь поможет?

2 ответов

10 просмотров

очень больно глазкам читать разъехавшийся код с мобилки. Попробуйте скасти, есть в описании канала

Какая версия компилятора у тебя? В скасти последняя по дефолту

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта