Size: a a a

Чат подкаста «Разбор Полётов»

2021 September 17

ПФ

Паша Финкельштейн... in Чат подкаста «Разбор Полётов»
А можно пример? Я просто не знаю, не встречался
источник

ПФ

Паша Финкельштейн... in Чат подкаста «Разбор Полётов»
Ну или ссылку на доку
источник

λ

λoλcat in Чат подкаста «Разбор Полётов»
За счет тайпклассов и макросов можно делать вообще все что угодно. Достаточно посмотреть хотя б на любой sql интерполятор.
источник

λ

λoλcat in Чат подкаста «Разбор Полётов»
источник

NK

ID:0 in Чат подкаста «Разбор Полётов»
источник

ПФ

Паша Финкельштейн... in Чат подкаста «Разбор Полётов»
Не понял почему это мощнее того что можно сделать будет после имплементации пропозала. Из-за изменяемого префикса?
источник

λ

λoλcat in Чат подкаста «Разбор Полётов»
Ну в скале есть механизмы, чтобы затащить в компайл-тайме что угодно в контекст интерполятора.
источник

λ

λoλcat in Чат подкаста «Разбор Полётов»
https://scala-slick.org/doc/3.0.0/sql.html

Хотя бы вот на эти интерполяторы посмотри. Или на дуби.

На любые интерполяторы для жсона, хмля, произвольного диалекта и драйвера любой носкл бд и т.д.
источник

ПФ

Паша Финкельштейн... in Чат подкаста «Разбор Полётов»
Макросы заменяются кодогеном, например
источник

ПФ

Паша Финкельштейн... in Чат подкаста «Разбор Полётов»
А я знаю Слик :)
источник

λ

λoλcat in Чат подкаста «Разбор Полётов»
Ну вот там примеры прекрасные - что может интерполятор
источник

ПФ

Паша Финкельштейн... in Чат подкаста «Разбор Полётов»
И в пропозале есть похожая идея: STR.string("template")
источник

ПФ

Паша Финкельштейн... in Чат подкаста «Разбор Полётов»
Причём учитывая что этот Policy - обычный объект - туда тоже что угодно можно затащить
источник

λ

λoλcat in Чат подкаста «Разбор Полётов»
Ага, максимум рантайм мапперы, как обычно
источник

ПФ

Паша Финкельштейн... in Чат подкаста «Разбор Полётов»
Не понял
источник

ПФ

Паша Финкельштейн... in Чат подкаста «Разбор Полётов»
Хоть прямо из бд туда читай, только умей по объекту из бд читать
источник

ПФ

Паша Финкельштейн... in Чат подкаста «Разбор Полётов»
String s = JSON."""
               {
                  "a": \{a},
                  "b": \{b}
               }
               """;
источник

ПФ

Паша Финкельштейн... in Чат подкаста «Разбор Полётов»
Вот прямо из пропозала пример
источник

ПФ

Паша Финкельштейн... in Чат подкаста «Разбор Полётов»
var query = connection."SELECT * FROM \{table}";

Или ещё
источник

λ

λoλcat in Чат подкаста «Разбор Полётов»
Если я к байндингу хочу привязать енкодер согласно его типу, я не могу это сделать компилятором т.к. нет механизма тайпклассов. Я могу это сделать субтайпингом, что сильно ограничивает возможности, либо передачей какого-то маппера, который будет связывать тип байндинга с его енкодером уже в рантайме.

Это вообще относится не конкретно к интерполяции, но здесь является отличным примером.
источник