Извлечение значения параметра из списка с помощью стрелки-ktJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Извлечение значения параметра из списка с помощью стрелки-kt

Сообщение Anonymous »

Я работаю над переносом некоторого существующего кода Kotlin с стрелки 1.x на 2.x. Одна из существующих функций, которую мне нужно обновить, заключается в получении списка объектов телефонных записей, их фильтрации и возврате первого результата в качестве опции. Старый код выглядел примерно так:

Код: Выделить всё

fun filterPhone(wdPhone: WorkdayPhoneRecord, existingBlackbaudPhoneNumbers: List): Option
{
val existingNumber: Option = existingBlackbaudPhoneNumbers
.filter {
val wdPhoneType: Option = wdPhone.blackbaudType()
wdPhoneType.equals(it.phoneType)
}.filter {
it.phoneNumberStripped().isSome()
}.filter {
it.phoneEndDate == null
}.firstOrNone().orElse {
//look for a business number that matches a campus number
existingBlackbaudPhoneNumbers.filter {
val wdPhoneType: Option = wdPhone.blackbaudType()
"Campus".equals(wdPhoneType) && "Business".equals(it.phoneType)
}.filter {
it.phoneNumberStripped().isSome()
}.filter {
it.phoneEndDate == null
}.firstOrNone()
}
return existingNumber
}
Обратите внимание на строку 10. «orElse» заменено в Arrow 2.x на «getOrElse». Кажется, это должно быть простое обновление, но когда я переключаюсь на новый синтаксис, мой код больше не компилируется. Я получаю сообщение об ошибке: «Несоответствие типа инициализатора: ожидается «Option < BlackbaudPhoneRecord >», фактическое «Любой».
Я перепробовал все, что мог придумать, но, похоже, ничего не помогает устранить эту ошибку. Может кто-нибудь объяснить, почему компилятор жалуется на этот код и что я могу сделать, чтобы это исправить?

Подробнее здесь: https://stackoverflow.com/questions/798 ... g-arrow-kt
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»