Size: a a a

2019 December 06

Ⓢⓔⓡⓖ in Kotlin Moscow
👍
источник
2019 December 07

И

Илья in Kotlin Moscow
А чем тфс не устраивает?
источник
2019 December 08

AA

Askhad Apishev in Kotlin Moscow
парни, кто-нибудь пользуется в android studio upsource'ом для код ревью?
источник
2019 December 09

W

Welcome Bot in Kotlin Moscow
Добро пожаловать в чат «Kotlin Moscow», bayi bayi, агент без юзернейма!
Правила чата: http://telegra.ph/Pravila-chata-06-02
Заявка на доклад: http://goo.gl/i66Cwa
источник

VS

Vladimir Sitnikov in Kotlin Moscow
А можно вопросик про .use { } ?

inline fun <reified T> File.serialize(value: T) =
   ObjectOutputStream(outputStream().buffered()).use {
       it.writeObject(value)
   }

Выглядит более-менее норм, но есть нюанс: если ошибка возникнет в ObjectOutputStream конструкторе, то стрим не закроется.


Получается, нужно так?

inline fun <reified T> File.serialize2(value: T) =
   outputStream().buffered().use {
       ObjectOutputStream(it).use {
           it.writeObject(value)
       }
   }


Или есть способ, чтобы не плодились вложенные use’ы?
источник

VV

Vladislav Verminsky in Kotlin Moscow
Vladimir Sitnikov
А можно вопросик про .use { } ?

inline fun <reified T> File.serialize(value: T) =
   ObjectOutputStream(outputStream().buffered()).use {
       it.writeObject(value)
   }

Выглядит более-менее норм, но есть нюанс: если ошибка возникнет в ObjectOutputStream конструкторе, то стрим не закроется.


Получается, нужно так?

inline fun <reified T> File.serialize2(value: T) =
   outputStream().buffered().use {
       ObjectOutputStream(it).use {
           it.writeObject(value)
       }
   }


Или есть способ, чтобы не плодились вложенные use’ы?
Почему? Все стримы при закрытии закрывают делегатов.
источник

VV

Vladislav Verminsky in Kotlin Moscow
А use это просто сахар на try With resources
источник

VS

Vladimir Sitnikov in Kotlin Moscow
Vladislav Verminsky
Почему? Все стримы при закрытии закрывают делегатов.
ObjectOutputStream(outputStream().buffered()).use {

Ещё раз: если ошибка выпадет из конструктора ObjectOutputStream, то до выполнения .use вообще дело не дойдёт
источник

RI

Ruslan Ibragimov in Kotlin Moscow
Vladimir Sitnikov
А можно вопросик про .use { } ?

inline fun <reified T> File.serialize(value: T) =
   ObjectOutputStream(outputStream().buffered()).use {
       it.writeObject(value)
   }

Выглядит более-менее норм, но есть нюанс: если ошибка возникнет в ObjectOutputStream конструкторе, то стрим не закроется.


Получается, нужно так?

inline fun <reified T> File.serialize2(value: T) =
   outputStream().buffered().use {
       ObjectOutputStream(it).use {
           it.writeObject(value)
       }
   }


Или есть способ, чтобы не плодились вложенные use’ы?
afaik нету, кто-то пытался велосипедить use2, в @kotlin_lang можно найти
источник

VV

Vladislav Verminsky in Kotlin Moscow
Получается нужно  написать что то типа <T: Closable, R > use(const: () -> T, block: (T) -> R): R
и вызывать как-то так use({ ObjectOutputStream(outputStream().buffered()) })  {
it.writeObject(value)
}
источник

I

Ilmir in Kotlin Moscow
источник

VS

Vladimir Sitnikov in Kotlin Moscow
О, спс!
Добавил комментарий туда со своим вариантом, который «конечно же» намного лучше других 🙂
источник
2019 December 10

MK

Mark Kos in Kotlin Moscow
Можно подсказать компилятору что Val X: Long , это не примитив, а объект?
источник

MK

Mark Kos in Kotlin Moscow
Usage из джавы страдает
источник

ОР

Олег Румянцев in Kotlin Moscow
Long?
источник

MK

Mark Kos in Kotlin Moscow
Тогда usage из Котлина страдает
источник

MK

Mark Kos in Kotlin Moscow
Он же не null
источник

ОР

Олег Румянцев in Kotlin Moscow
X!!
источник

MK

Mark Kos in Kotlin Moscow
Великолепно
источник

MK

Mark Kos in Kotlin Moscow
Тогда  Long javaX= kotlin.getX()
источник