что-то как по мне - звучит бредово <https://youtra...
# russian
l
что-то как по мне - звучит бредово https://youtrack.jetbrains.com/issue/KT-20781
a
Звучит нормально, пока не надо это реализовывать (передавать значения туда и обратно). А когда задумаешься о реализации хотя бы 5 секунд- то сразу в морг (идею).
l
вот и я про то же
может предложу плохой вариант, но можно было бы сделать
!!
оператором и определить как расширение для Optional
Copy code
fun somethingOptional():Optional<T>

var x: T? = somethingOptional()!!
или же !!!
@aleksey.tomin на самом деле передовать не сложно, Optional.of() или Optional.ofNullable() прямо при передаче аргумента дальше. с вытаскиванием то тоже решается, orElse(null). ну будет везде лишний вызов а что делать при реализации Java интерейса, который прнимает Optional и возвращает его же? ну ок, вытащили, что то сделали, завернули и отдали. но тут напрашивается, не выгоднее ли возпользоваться API самого Optional?
получается та же проблема автоматического боксинга и анбоксинга
опять таки всплывает вопрос бинарной совместимости
хотя нет, не бинарной. в скомпиленном коде ничего не сломается, а вот при сборке придется переписывать
работает, но оператор не совсем тот
Copy code
operator fun <T> Optional<T>.not() : T? = orElse(null)

fun somethingOptional():Optional<T>

var x: T? = !somethingOptional()
а тут предложили более корректный вариант
Copy code
val <T> Optional<T>.asNullable: T? get() = orElse(null)
ну и компаньон
Copy code
val <T> T.asOptional: Optional<T> get() = Optional.ofNullable(this)
g
ну, концептуально он же прав, идея здравая. Может как плагин или отключаемый флаг, если что пойдёт не так.
a
Там вместо этого игнор 🙂
👆 1
i
Вместо дизлайка гораздо более действенно будет оставить комментарий с аргументами 😉
g
и тогда с дислайками бы не было data классов? 🧌 Не, все норм как есть.