https://kotlinlang.org logo
Title
l

lex

02/14/2019, 4:38 AM
что-то как по мне - звучит бредово https://youtrack.jetbrains.com/issue/KT-20781
a

aleksey.tomin

02/14/2019, 4:52 AM
Звучит нормально, пока не надо это реализовывать (передавать значения туда и обратно). А когда задумаешься о реализации хотя бы 5 секунд- то сразу в морг (идею).
l

lex

02/14/2019, 4:59 AM
вот и я про то же
может предложу плохой вариант, но можно было бы сделать
!!
оператором и определить как расширение для Optional
fun somethingOptional():Optional<T>

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

fun somethingOptional():Optional<T>

var x: T? = !somethingOptional()
а тут предложили более корректный вариант
val <T> Optional<T>.asNullable: T? get() = orElse(null)
ну и компаньон
val <T> T.asOptional: Optional<T> get() = Optional.ofNullable(this)
g

ghedeon

02/14/2019, 7:09 AM
ну, концептуально он же прав, идея здравая. Может как плагин или отключаемый флаг, если что пойдёт не так.
m

miha-x64

02/14/2019, 11:18 AM
В YouTrack не хватает поддержки дислайков.
👍 1
a

altavir

02/14/2019, 11:55 AM
Там вместо этого игнор 🙂
👆 1
i

ilya.gorbunov

02/14/2019, 1:51 PM
Вместо дизлайка гораздо более действенно будет оставить комментарий с аргументами 😉
g

ghedeon

02/14/2019, 2:33 PM
и тогда с дислайками бы не было data классов? :troll: Не, все норм как есть.