Сообщение Re[2]: String templates (JEP 430) от 02.08.2023 16:57
Изменено 02.08.2023 17:01 ·
Re[2]: String templates (JEP 430)
Здравствуйте, vsb, Вы писали:
vsb>·>Вот такие макросы. Простые до безобразия, но, имхо, довольно мощные, покрывают довольно много сценариев.
vsb>Не хватает опциональных спецификаторов для форматирования.
Ты не понял, наверное. Внутри \{} находится обычное java-выражение, т.е. произвольный код и у выражения есть java-тип. В отличие от всяких шарпов — типы сохраняются, а не "всё — строки".
vsb>Если взять тот же пример с SQL, то в JDBC в общем случае требуется указывать тип аргумента.
Не надо. Есть же тип у выражения.
Тебе внутрь шаблона придёт List.of(18, "vasya") для каждого элемена можно сделать instanceof и соответсвующие маппинги типов.
vsb>Т.е. правильный код должен выглядеть примерно так:
Нет, или я не понял что именно ты имеешь в виду, что делать с этим VARCHAR2?
vsb>Этого, к сожалению, нет. Конечно можно вынести их за фигурную скобку и парсить строку, но это уже не совсем то... Лучшее, что можно придумать это обёртку:
Это если тебе надо типы java->sql преобразовывать только для каждого аргумента по-разному.
vsb>Также они были бы полезны для обычного форматирования строк: fmt"n=\{n:02x}" вместо format("n=%02x", n).
Это уже реализовали в стандартном FMT, погляди как на страничке jep. Просто наоборот записывается: FMT."n=%02\{n}".
vsb>Не понял, правда, при чём тут макросы.
Ну обычно во всяких немерлях такое делали макросами которое, конечно, навороченнее, но гораздо сложнее. А тут всё просто.
vsb>·>Вот такие макросы. Простые до безобразия, но, имхо, довольно мощные, покрывают довольно много сценариев.
vsb>Не хватает опциональных спецификаторов для форматирования.
Ты не понял, наверное. Внутри \{} находится обычное java-выражение, т.е. произвольный код и у выражения есть java-тип. В отличие от всяких шарпов — типы сохраняются, а не "всё — строки".
vsb>Если взять тот же пример с SQL, то в JDBC в общем случае требуется указывать тип аргумента.
Не надо. Есть же тип у выражения.
int age = 18;
String name = "vasya";
db."insert...\{age} \{name}"
Тебе внутрь шаблона придёт List.of(18, "vasya") для каждого элемена можно сделать instanceof и соответсвующие маппинги типов.
vsb>Т.е. правильный код должен выглядеть примерно так:
Нет, или я не понял что именно ты имеешь в виду, что делать с этим VARCHAR2?
vsb>Этого, к сожалению, нет. Конечно можно вынести их за фигурную скобку и парсить строку, но это уже не совсем то... Лучшее, что можно придумать это обёртку:
Это если тебе надо типы java->sql преобразовывать только для каждого аргумента по-разному.
vsb>Также они были бы полезны для обычного форматирования строк: fmt"n=\{n:02x}" вместо format("n=%02x", n).
Это уже реализовали в стандартном FMT, погляди как на страничке jep. Просто наоборот записывается: FMT."n=%02\{n}".
vsb>Не понял, правда, при чём тут макросы.
Ну обычно во всяких немерлях такое делали макросами которое, конечно, навороченнее, но гораздо сложнее. А тут всё просто.
Re[2]: String templates (JEP 430)
Здравствуйте, vsb, Вы писали:
vsb>·>Вот такие макросы. Простые до безобразия, но, имхо, довольно мощные, покрывают довольно много сценариев.
vsb>Не хватает опциональных спецификаторов для форматирования.
Ты не понял, наверное. Внутри \{} находится обычное java-выражение, т.е. произвольный код и у выражения есть java-тип. В отличие от всяких шарпов — типы сохраняются, а не "всё — строки".
vsb>Если взять тот же пример с SQL, то в JDBC в общем случае требуется указывать тип аргумента.
Не надо. Есть же тип у выражения.
Тебе внутрь шаблона придёт List.of(18, "vasya") для каждого элемена можно сделать instanceof и соответсвующие маппинги типов.
vsb>Т.е. правильный код должен выглядеть примерно так:
Нет, или я не понял что именно ты имеешь в виду, что делать с этим VARCHAR2?
vsb>Этого, к сожалению, нет. Конечно можно вынести их за фигурную скобку и парсить строку, но это уже не совсем то... Лучшее, что можно придумать это обёртку:
Это если тебе надо типы java->sql преобразовывать только для каждого аргумента по-разному.
vsb>Также они были бы полезны для обычного форматирования строк: fmt"n=\{n:02x}" вместо format("n=%02x", n).
Это уже реализовали в стандартном FMT, погляди как на страничке jep. Просто наоборот записывается: FMT."n=%02x\{n}".
vsb>Не понял, правда, при чём тут макросы.
Ну обычно во всяких немерлях такое делали макросами которое, конечно, навороченнее, но гораздо сложнее. А тут всё просто.
vsb>·>Вот такие макросы. Простые до безобразия, но, имхо, довольно мощные, покрывают довольно много сценариев.
vsb>Не хватает опциональных спецификаторов для форматирования.
Ты не понял, наверное. Внутри \{} находится обычное java-выражение, т.е. произвольный код и у выражения есть java-тип. В отличие от всяких шарпов — типы сохраняются, а не "всё — строки".
vsb>Если взять тот же пример с SQL, то в JDBC в общем случае требуется указывать тип аргумента.
Не надо. Есть же тип у выражения.
int age = 18;
String name = "vasya";
db."insert...\{age} \{name}"
Тебе внутрь шаблона придёт List.of(18, "vasya") для каждого элемена можно сделать instanceof и соответсвующие маппинги типов.
vsb>Т.е. правильный код должен выглядеть примерно так:
Нет, или я не понял что именно ты имеешь в виду, что делать с этим VARCHAR2?
vsb>Этого, к сожалению, нет. Конечно можно вынести их за фигурную скобку и парсить строку, но это уже не совсем то... Лучшее, что можно придумать это обёртку:
Это если тебе надо типы java->sql преобразовывать только для каждого аргумента по-разному.
vsb>Также они были бы полезны для обычного форматирования строк: fmt"n=\{n:02x}" вместо format("n=%02x", n).
Это уже реализовали в стандартном FMT, погляди как на страничке jep. Просто наоборот записывается: FMT."n=%02x\{n}".
vsb>Не понял, правда, при чём тут макросы.
Ну обычно во всяких немерлях такое делали макросами которое, конечно, навороченнее, но гораздо сложнее. А тут всё просто.