Вопросы с тегом «metaprogramming»

Метапрограммирование - это возможность перепрограммировать среду программирования, как с макросами или метаклассами.

344
Python словарь из полей объекта

Знаете ли вы, есть ли встроенная функция для создания словаря из произвольного объекта? Я хотел бы сделать что-то вроде этого: >>> class Foo: ... bar = 'hello' ... baz = 'world' ... >>> f = Foo() >>> props(f) { 'bar' : 'hello', 'baz' : 'world' } ПРИМЕЧАНИЕ: не должно...

157
Вызов метода из строки с именем метода в Ruby

Как я могу сделать то, о чем они говорят здесь , но в Ruby? Как бы вы сделали функцию на объекте? и как бы вы сделали глобальную функцию (см. ответ Jetxee на упомянутый пост)? ПРИМЕР КОДА: event_name = "load" def load() puts "load() function was executed." end def row_changed() puts "row_changed()...

149
Может ли строка кода Python знать свой уровень вложенности отступа?

Из чего-то вроде этого: print(get_indentation_level()) print(get_indentation_level()) print(get_indentation_level()) Я хотел бы получить что-то вроде этого: 1 2 3 Может ли код читать себя таким образом? Все, что я хочу, - это вывод из более вложенных частей кода, чтобы быть более вложенными. Точно...

137
Удобное объявление строк времени компиляции в C ++

Возможность создавать строки и управлять ими во время компиляции в C ++ имеет несколько полезных приложений. Хотя в C ++ можно создавать строки во время компиляции, этот процесс очень громоздкий, поскольку строку необходимо объявить как последовательность символов с переменным числом аргументов,...

135
Можно ли выяснить тип параметра и тип возврата лямбда?

Учитывая лямбду, возможно ли выяснить ее тип параметра и тип возвращаемого значения? Если да, то как? В принципе, я хочу, lambda_traitsкоторый может быть использован следующими способами: auto lambda = [](int i) { return long(i*10); }; lambda_traits<decltype(lambda)>::param_type i; //i should...

133
Можно ли реализовать в JavaScript динамические геттеры / сеттеры?

Я знаю, как создавать геттеры и сеттеры для свойств, имена которых уже известны, делая что-то вроде этого: // A trivial example: function MyObject(val){ this.count = 0; this.value = val; } MyObject.prototype = { get value(){ return this.count < 2 ? "Go away" : this._value; }, set value(val){...

129
Что такое метапрограммирование?

Я читал статью на TheServerSide о программировании плойглотов на платформе Java . Некоторые комментарии в статье относятся к метапрограммированию как к способности генерировать код (возможно, «на лету»). Метапрограммирование способности генерировать код на лету или способность внедрять методы и...

128
Класс Objective-C -> строка вида: [NSArray className] -> @ «NSArray»

Я пытаюсь получить строковое имя класса из самого объекта класса. // For instance [NSArray className]; // @"NSArray" Я нашел, object_getClassName(id obj)но для этого требуется передать ему экземпляр, а в моем случае это ненужная работа. Итак, как я могу получить строку из объекта класса, а не из...

123
Примеры C ++ SFINAE?

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

122
Как заставить компилятор C #, C ++ или Java вычислять 1 + 2 + 3 +… + 1000 во время компиляции?

В недавнем интервью мне задали действительно странный вопрос. Интервьюер спросил меня, как я могу вычислить 1 + 2 + 3 + ... + 1000, просто используя функции компилятора. Это означает, что мне не разрешено писать программу и выполнять ее, но я должен просто написать программу, которая могла бы...

112
Лучшее введение в метапрограммирование шаблонов C ++? [закрыто]

Закрыто. Этот вопрос не соответствует рекомендациям по переполнению стека . В настоящее время он не принимает ответы. Хотите улучшить этот вопрос? Обновите вопрос, чтобы он соответствовал теме Stack Overflow. Закрыт 3 года назад . Уточните этот вопрос Статическое метапрограммирование (также...

111
Как Pony (ORM) делает свои трюки?

Pony ORM отлично справляется с преобразованием выражения генератора в SQL. Пример: >>> select(p for p in Person if p.name.startswith('Paul')) .order_by(Person.name)[:2] SELECT "p"."id", "p"."name", "p"."age" FROM "Person" "p" WHERE "p"."name" LIKE "Paul%" ORDER BY "p"."name" LIMIT 2...

101
Хеширование строки времени компиляции

Я читал в нескольких разных местах, что, используя новые строковые литералы C ++ 11, можно было бы вычислить хэш строки во время компиляции. Однако, похоже, никто не готов выступить и сказать, что это будет возможно или как это будет сделано. Это возможно? Как бы выглядел оператор? Меня особенно...

99
Получить значение переменной экземпляра по ее имени

В общем, как мне получить ссылку на объект, имя которого у меня есть в строке? В частности, у меня есть список имен параметров (переменные-члены - создаются динамически, поэтому я не могу ссылаться на них напрямую). Каждый параметр - это объект, у которого также есть from_sметод. Я хочу сделать...

96
Метапрограммирование Ruby: имена переменных динамического экземпляра

Допустим, у меня есть следующий хеш: { :foo => 'bar', :baz => 'qux' } Как я мог динамически установить ключи и значения, чтобы они стали переменными экземпляра в объекте ... class Example def initialize( hash ) ... magic happens here... end end ... так что внутри модели я получу следующее...