split существует у String, не у Result<String>. Я не уверен, что там было в 1.4 c этим, но это скорее про что-нибудь вроде foo()?.map { it.split("|") } ?. , ?: и !! в Котлине это исключительно про nullable типы
foo().getOrNull()
Да это понятно. Я про то что в KEEP написано, что можно как у меня в примере в котлин 1.5.
Нет там такого. Да, там написано, что вы можете применять эти операторы на Result<T> и Result<T>?. Но это не означает, что эти операторы работают как-то иначе с Result, ещё раз - в Котлине они только про nullability.
согласись, было бы странным что оператор имел бы семантику для какого-то типа абсолютно другую от стандартной
Я не готов утверждать что именно с этим конфуз, но насколько в условном расте знак вопроса работает не только c "nullability", но и абстрактным error handling (т.е. работа и с Result и c Option похожа в плане операторов). Если конфуз с этим, то относительно понятно.
Но зачем вообще возвращать именно nullable result (Result<T>?) не совсем понятно, так как сама концепция резалта же про null safety. Нужно короче весь пропозал зачитать для понимания.
Это не дает возможности на резалте вызывать методы того, что в резалт завернуто.
Имеется ввиду, что были размышления дать этим операторам особое поведение для Result, потому их использование ранее было запрещено на значениях этого типа, но впоследствии кастомную семантику вводить передумали и разрешили использовать эти операторы, которые работают так же, как и на любом наллабле.
Ага, спасибо. Разобрался. Я там дальше почитал. Вообще было круто иметь нативный Result, который бы ложился на Java checked exceptions. Но там пока незакрытые вопросы.
Если имеется ввиду на манер того, как эмулируют checked exceptions в Scala 3, то вроде не звучало планов подобное поддерживать. Да и без сумм типов это не сумасшедше удобно в резалте изображать. Так что пока ждём-с.
Обсуждают сегодня