Size: a a a

Kotlin Community

2020 April 04

DB

Dmitro Boiko in Kotlin Community
там понты людей
источник

DB

Dmitro Boiko in Kotlin Community
но все равно спасибо
источник

AN

Alexander Nozik in Kotlin Community
Очередной заход по бинарям. Смотрите как красиво получилось:
        val binary = ByteArray(128){it.toByte()}.asBinary()
       
       binary[3..12].read {
           readInt()
           readInt()
       }

С файлами так же работает.
источник

АО

Алексей Овсянников in Kotlin Community
это котлин?
источник

АО

Алексей Овсянников in Kotlin Community
а это легально вообще? (круто, на самом деле)
источник

AN

Alexander Nozik in Kotlin Community
Алексей Овсянников
а это легально вообще? (круто, на самом деле)
Легально. Использую IntRaтge в качестве ключа. Только что придумал. Но там важно, что сделан zero-copy доступ к блокам подблокам и прочему. Надо еще дотестить все, разумеется.
источник

AW

Alex Wells in Kotlin Community
Опять я со своим kotlinx serialization'ом) Доку третий раз перечитываю и все никак не могу вьехать, как мне сделать кастомный сериалайзер, не заточенный под конкретный тип, а принимающий его в конструктор, как SealedClassSerializer?

class UnionTypeSerializer<T : Any>(
       val baseClass: KClass<T>
) : KSerializer<T>

и.е. вот так
источник

AW

Alex Wells in Kotlin Community
мне ж при десериализации надо знать, во что десериализировать, а я не знаю
источник

AW

Alex Wells in Kotlin Community
источник

AW

Alex Wells in Kotlin Community
нужна вот такая шляпа, только не заточенная под один лишь Either.
источник

U

Unat in Kotlin Community
Alex Wells
мне ж при десериализации надо знать, во что десериализировать, а я не знаю
А почему не знаешь?
источник

AW

Alex Wells in Kotlin Community
Unat
А почему не знаешь?
override fun deserialize(decoder: Decoder): T {}
источник

AW

Alex Wells in Kotlin Community
я могу прочесть json, а дальше?) T то я не знаю
источник

U

Unat in Kotlin Community
Alex Wells
я могу прочесть json, а дальше?) T то я не знаю
Так ты в конструктор можешь ведь передать что-то?
источник

AW

Alex Wells in Kotlin Community
так я ж не руками создаю инстенс сериалайзера
источник

AW

Alex Wells in Kotlin Community
хочется вот так)
@Serializable(with = UnionTypeSerializer::class)
       @SerialName("Expr_Variable")
       sealed class Variable() : Expr() {
           @Serializable
           data class Named(val name: String) : Variable()
           @Serializable
           data class Expression(val expr: Expr) : Variable()
       }
источник

AN

Alexander Nozik in Kotlin Community
Можно использовать внешний сериализатор для сериализации полей, просто из методов сериализатора вызываете соответствующие методы параметра
источник

AW

Alex Wells in Kotlin Community
Можно, но получится много boilerplate на каждый класс
источник

AN

Alexander Nozik in Kotlin Community
Alex Wells
Можно, но получится много boilerplate на каждый класс
Ну простых билдеров для кастомных сериализаторов пока нет.
источник

AN

Alexander Nozik in Kotlin Community
Силеды - это вообще сложно. Я правда не очень понял, что именно вам надо, если прописать сериализаторы на обе ветки, все автоматом должно генериться
источник