Re[13]: а почему Qt-шные сигналы/слоты не вносят в стандарт C
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 04.07.25 16:05
Оценка:
Здравствуйте, ·, Вы писали:

·>Ну так разберись как макросы работают. И почему они называются макросами, а не рефлексией.


Зачем бы мне это?


·>Это в каком-то смысле сишный препроцессор, но только сделанный по-человечески. Называть сишний препроцессор рефлексией у тебя наглости не хватит, надеюсь.


Вот именно, что "в каком-то виде".

Рефлексия — это тоже в каком-то виде сишный препроцессор, но только сделанный по-человечески.



M>>·>В Java есть рефлексия, но нет интерполяции."

M>>Если есть рефлексия, то можно написать интерполяцию.
·>Нельзя.

С фига ли? Что мешает?


M>>Но ты же мне покажешь, как на плюсах при помощи метапрограммирования написать интерполяцию?

·>Только после того, как ты мне покажешь как в java через рефлексию написать интерполяцию.

В java есть возможность через рефлексию получить доступ к локальным переменным текущей функции/фрейма? Тогда нет проблем.

На Java я конечно ничего писать не буду, но приведу тебе другой пример. У меня есть библиотека marty::format. Там у меня есть возможность обращаться к аргументам по имени. Для этого есть специальный тип marty::format::Args — он хранит список аргументов в том порядке, в котором в него их поместили, за счёт чего можно к ним обращаться по индексу, и, дополнительно, там внутри есть ассоциативный массив, в котором хранятся связи имя->индекс, и за счёт этого и происходит обращение к аргументам по имени.
Если в плюсах появится рантайм-рефлексия, я легко переделаю этот код на код с интерполяцией, и выкину marty::format::Args. У меня разбор форматной строки делается в рантайме, потому мне нужна рантайм-рефлексия, но если бы разбор форматной строки был бы в компайл-тайм, то и интерполяция была бы времени компиляции (судя по всему, некоторые возможности компайл-тайм-рефлексии называют интроспекцией, ну окай, пусть будет интроспекция, хотя почему тогда в плюсах её называют рефлексией?).

Не вижу проблем сделать аналогичное на Java.


M>>Я никогда не писал на раст, и конечно, ничего тебе не напишу. Даже если в расте нельзя получить имя функции, это говорит только об ограниченных возможностях рефлексии, а не о полном её отсутствии

·>Нет, это говорит лишь о том, что ты плохо разбираешься в терминологии.

Или ты

  1. Есть ли в языке Rust рефлексия?

  2. Что из себя представляют макросы Rust?


  3. Интерполяция строк в Rust

DeepSeek говорит, что а) есть интроспекция — костыльная недо-рефлексия б) интерполяции в расте нет
Хз, может, и врёт
Маньяк Робокряк колесит по городу
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.