У меня проблемы с преобразованием этого куска Java в Kotlin:
Publishers.map(chain.proceed(request), response -> {
if (request.getCookies().contains("SOME_VALUE")) {
response.cookie(request.getCookies().get(STATE_COOKIENAME).maxAge(0));
}
return response;
});
Второй параметр метода map
(примечание Publishers
не является коллекцией) принимает Function<T,R>
.
Я пробовал несколько решений, в том числе обеспечение лямбда таким образом:
Publishers.map(chain?.proceed(request), {
x: MutableHttpResponse<*>!,
y: MutableHttpResponse<*>! -> print("It worked")
})
но это приводит к:
Ошибка: (32, 38) Kotlin: неожиданный токен
Ошибка: (33, 38) Kotlin: неожиданный токен
Ошибка: (31, 27) Kotlin: Ошибка вывода типа: забавная карта (издатель: Издатель! Картограф: Функция!): Издатель!
не может применяться к
(Издатель>!>?, (MutableHttpResponse <>, MutableHttpResponse <*>) -> Unit)
Ошибка: (31, 56) Kotlin: Несоответствие типов: выводимый тип (MutableHttpResponse <<em>>, MutableHttpResponse <</em>>) -> Единица, но функция> !, MutableHttpResponse <>?>! ожидалось
и предоставление метода:
return Publishers.map(chain?.proceed(request), ::processCookie)
private fun processCookie(a: MutableHttpResponse<*>?) {
print("something something something")
}
, что приводит к:
Ошибка: (31, 27) Kotlin: Ошибка вывода типа: забавная карта (издатель: Publisher !, mapper: Function!): Publisher!
не может применяться к
(Издатель>!> ?, KFunction1 <@ParameterName MutableHttpResponse <> ?, Unit>)
Ошибка: (31, 56) Kotlin: Несоответствие типов: выведенный тип - KFunction1 <@ParameterName MutableHttpResponse <> ?, Unit> but Function> !, MutableHttpResponse <*>?>! ожидалось
Для контекста я подумал, что было бы интересно попробовать этот урок на kotlin.