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

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

Сообщение Anonymous »

Я работаю над переносом существующего кода Kotlin из Arrow 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>, фактический Any.

Я перепробовал все, что мог придумать, но, кажется, ничего не помогает устранить эту ошибку. Может кто-нибудь объяснить, почему компилятор жалуется на этот код и что я могу сделать, чтобы это исправить?

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

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

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

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

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

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