169 похожих чатов

Окей Тогда я ещё скажу своё решение, что на счёт него я

сделал минимальный билдер класс и теперь оно делается так
Payload { data("text"); metadata(byteArrayOf(1, 2, 3)) }
и тогда у data/metadata пару оверлоадов + можно достаточно просто это дело расширять под свои нужды
лучше это, или хуже 15 оверлоадов или BRP.fromString("text") и тд, что думаете?
учитывая, что это публичный апи либы

28 ответов

13 просмотров

Если назвать это buildPayload, то очень даже норм. А там в теории может появиться что-то ещё?

Oleg-Yukhnevich Автор вопроса
Vladimir Petraković
Если назвать это buildPayload, то очень даже норм....

да вот например там ещё compositeMetadata билдер https://github.com/rsocket/rsocket-kotlin/blob/enhancement/metadata-and-payload-api/playground/src/commonMain/kotlin/Metadata.kt#L41

Oleg-Yukhnevich Автор вопроса
Vladimir Petraković
Если назвать это buildPayload, то очень даже норм....

вот кстати с buildPayload - это да, что-то я забыл про это

Oleg Yukhnevich
да вот например там ещё compositeMetadata билдер h...

Так всё уже готово, в чём тогда вопрос? 😄

Oleg-Yukhnevich Автор вопроса
Vladimir Petraković
Так всё уже готово, в чём тогда вопрос? 😄

оно не готово ещё, в этом и суть, что хотелось бы узнать другие возможные варианты

Oleg Yukhnevich
оно не готово ещё, в этом и суть, что хотелось бы ...

DSL - беспроигрышный вариант в котлине. А этот BRP - это ваш класс или из джавовой либы?

Жаль, что в дслке нет возможности зафорсить наличие вызова конкретного метода, как обязательного data у вас, но в остальном это вполне логичное решение. В джаве, я думаю, я б такую задачу билдером и решал, аналогия вполне прямая в котлин получается.

Oleg-Yukhnevich Автор вопроса
Andrew Mikhaylov
Жаль, что в дслке нет возможности зафорсить наличи...

в теории, data может быть пустой) поэтому указание только metadata - валидный кейс

Oleg Yukhnevich
из ktor-io)

Тогда я бы сделал конструктор с data и metadata, принимающими этот класс. Если что всегда можно накинуть ему в компаньон методы для создания из разных других типов.

Oleg Yukhnevich
в теории, data может быть пустой) поэтому указание...

А, ладно) Я по оригинальному посту подумал иначе.

Oleg Yukhnevich
в теории, data может быть пустой) поэтому указание...

Пустая data по дефолту - это сомнительное поведение. Если такое хочется, мне кажется, можно и явно указать.

Oleg-Yukhnevich Автор вопроса
Vladimir Petraković
Тогда я бы сделал конструктор с data и metadata, п...

я сейчас смотрю в сторону 2-ух ф-ий одна принимает 2 BRP вторая - билдер

Oleg-Yukhnevich Автор вопроса
Andrew Mikhaylov
А, ладно) Я по оригинальному посту подумал иначе.

оно просто имеет значение в малых кейсах единственное, не совсем валидный кейс наверно это Payload {} - но опять же, сомнительно, что кто-то такое будет делать

Oleg-Yukhnevich Автор вопроса
Vladimir Petraković
Пустая data по дефолту - это сомнительное поведени...

может быть и лучше падать сразу, по выходу из билдера, если нет explicit data, не знаю

Oleg Yukhnevich
может быть и лучше падать сразу, по выходу из билд...

Мне кажется, намного лучше. Чем быстрее упадёт код, который делает не то, что задумано, тем лучше. А иначе это какой-то protobuf style.

Oleg-Yukhnevich Автор вопроса
Oleg-Yukhnevich Автор вопроса
Andrew Mikhaylov
Жаль, что в дслке нет возможности зафорсить наличи...

я кстати вспомнил, что видел что-то на счёт этого толи в котлин репозитории, толи что в контрактах то есть там можно было объявить контракт на то, что данная ф-ия будет вызвана в данном контексте например AT_LEAST_ONCE или типа того так что может в какой-то версии котлина мы дождёмся такого :)

Oleg Yukhnevich
я кстати вспомнил, что видел что-то на счёт этого ...

В контрактах такое есть, но это скорее для ситуаций вроде val v: Int run { v = 42 } Но да, кто знает, может, докрутят :)

Oleg-Yukhnevich Автор вопроса
Andrew Mikhaylov
В контрактах такое есть, но это скорее для ситуаци...

я видел это где-то в ветке котлина, либо в репозитории каком-то от JB то есть типа research :)

Oleg-Yukhnevich Автор вопроса
Andrew Mikhaylov
А, значит чёт другое)

нашёл! https://github.com/demiurg906/kotlin-contracts-samples/blob/master/src/main/kotlin/samples/SafeBuilders.kt

Oleg Yukhnevich
нашёл! https://github.com/demiurg906/kotlin-contra...

Симпатишно :) Там, похоже, ещё и механизм пропагации контрактов изнутри наружу прототипировался)

Oleg Yukhnevich
нашёл! https://github.com/demiurg906/kotlin-contra...

Ух, огнище, вот бы сделали такое

Oleg-Yukhnevich Автор вопроса
Andrew Mikhaylov
Симпатишно :) Там, похоже, ещё и механизм пропагац...

да там вообще много всего я так понимаю хотели на контрактах сделать А потом появились 3 компилятора, которые надо в один* объединить и походу весь ресёрч остановился надеюсь когда будет stable IR то начнётся жара

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта