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

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

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


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


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

15
Удобное объявление строк времени компиляции в C ++
Возможность создавать строки и управлять ими во время компиляции в C ++ имеет несколько полезных приложений. Хотя в C ++ можно создавать строки во время компиляции, этот процесс очень громоздкий, поскольку строку необходимо объявить как последовательность символов с переменным числом аргументов, например using str = sequence<'H', 'e', 'l', 'l', 'o', …

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

4
Можно ли реализовать в 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){ this._value = val …

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

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

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

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

8
Лучшее введение в метапрограммирование шаблонов C ++? [закрыто]
Закрыто. Этот вопрос не соответствует рекомендациям по переполнению стека . В настоящее время он не принимает ответы. Хотите улучшить этот вопрос? Обновите вопрос, чтобы он соответствовал теме Stack Overflow. Закрыт 3 года назад . Уточните этот вопрос Статическое метапрограммирование (также известное как «шаблонное метапрограммирование») - это отличный метод C ++, …

1
Как 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 [Person[3], Person[1]] >>> Я знаю, что в Python есть замечательные встроенные функции самоанализа и …

6
Как использовать define_method для создания методов класса?
Это полезно, если вы пытаетесь создать методы класса метапрограммно: def self.create_methods(method_name) # To create instance methods: define_method method_name do ... end # To create class methods that refer to the args on create_methods: ??? end Мой ответ, чтобы следовать ...

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.