Создание временного кода компиляции в D

В настоящее время я изучаю D, и одна из вещей, которые меня интересовали, это то, есть ли у D способ дублировать возможности генерации кода языков JVM.

Вот. сценарий: У меня есть объект, и я хочу сгенерировать строку на основе этого объекта, который дает ему имя и все его поля. В Java / Scala я мог бы просто использовать отражение, но предположим, что скорость является проблемой. Я мог бы использовать библиотеку генерации байт-кода для динамической генерации и компиляции класса, который делает это без отражения. Реализация будет разбита на итерацию по полям объекта и получение его имени через рекурсию, а также использование этой информации для динамической генерации Java (или байт-кода), который обращается к полям напрямую.

Если вам не нравится этот сценарий, потому что он слаб и / или нереалистично, другой, который может быть более реалистичным, - это оптимизированная сериализация объектов.

Я видел примеры, где D ' s оценка времени компиляции и / или метапрограммирование шаблонов используются для таких вещей, как предварительное вычисление последовательности Фибоначчи во время компиляции и других рекурсивных алгоритмов, но есть ли способ сделать такие вещи только с помощью языка и компилятора, или вам нужно разработать отдельный генератор кода и запустить его перед компилятором, чтобы получить такую ​​функциональность?

10
задан debio 10 September 2010 в 06:25
поделиться