Здравствуйте, ·, Вы писали:
·>Ну так разберись как макросы работают. И почему они называются макросами, а не рефлексией.
Зачем бы мне это?
·>Это в каком-то смысле сишный препроцессор, но только сделанный по-человечески. Называть сишний препроцессор рефлексией у тебя наглости не хватит, надеюсь.
Вот именно, что "в каком-то виде".
Рефлексия — это тоже в каком-то виде сишный препроцессор, но только сделанный по-человечески.
M>>·>В Java есть рефлексия, но нет интерполяции."
M>>Если есть рефлексия, то можно написать интерполяцию.
·>Нельзя.
С фига ли? Что мешает?
M>>Но ты же мне покажешь, как на плюсах при помощи метапрограммирования написать интерполяцию?
·>Только после того, как ты мне покажешь как в java через рефлексию написать интерполяцию.
В java есть возможность через рефлексию получить доступ к локальным переменным текущей функции/фрейма? Тогда нет проблем.
На Java я конечно ничего писать не буду, но приведу тебе другой пример. У меня есть библиотека
marty::format. Там у меня есть возможность обращаться к аргументам по имени. Для этого есть специальный тип
marty::format::Args — он хранит список аргументов в том порядке, в котором в него их поместили, за счёт чего можно к ним обращаться по индексу, и, дополнительно, там внутри есть ассоциативный массив, в котором хранятся связи имя->индекс, и за счёт этого и происходит
обращение к аргументам по имени.
Если в плюсах появится рантайм-рефлексия, я легко переделаю этот код на код с интерполяцией, и выкину
marty::format::Args. У меня разбор форматной строки делается в рантайме, потому мне нужна рантайм-рефлексия, но если бы разбор форматной строки был бы в компайл-тайм, то и интерполяция была бы времени компиляции (судя по всему, некоторые возможности компайл-тайм-рефлексии называют интроспекцией, ну окай, пусть будет интроспекция, хотя почему тогда в плюсах её называют рефлексией?).
Не вижу проблем сделать аналогичное на Java.
M>>Я никогда не писал на раст, и конечно, ничего тебе не напишу. Даже если в расте нельзя получить имя функции, это говорит только об ограниченных возможностях рефлексии, а не о полном её отсутствии
·>Нет, это говорит лишь о том, что ты плохо разбираешься в терминологии.
Или ты
| | 1. Есть ли в языке Rust рефлексия? |
| |  |
| | |
| | 2. Что из себя представляют макросы Rust? |
| | 
 |
| | |
| | 3. Интерполяция строк в Rust |
| |  |
| | |
DeepSeek говорит, что а) есть интроспекция — костыльная недо-рефлексия б) интерполяции в расте нет
Хз, может, и врёт