Запитання з тегом «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', ',', ' ', 'w', 'o', 'r', …

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 + …

3
Клас Objective-C -> рядок типу: [NSArray className] -> @ "NSArray"
Я намагаюся отримати ім'я рядка класу від самого об’єкта класу. // For instance [NSArray className]; // @"NSArray" Я знайшов, object_getClassName(id obj)але для цього потрібен екземпляр, і в моєму випадку це зайва робота. Тож як я можу отримати рядок від об’єкта класу, а не екземпляра?

7
Що саме є метапрограмуванням?
Я читав статтю про TheServerSide про програмування ployglot на платформі Java . Деякі коментарі до статті називають метапрограмування здатністю генерувати код (можливо, на льоту). Це метапрограмування здатності генерувати код на льоту або це здатність вводити методи та атрибути в існуючі об’єкти під час виконання (наприклад, що дозволяють деякі динамічні мови, …

13
Як запустити компілятор C #, C ++ або Java для обчислення 1 + 2 + 3 +… + 1000 під час компіляції?
В недавньому інтерв'ю мені поставили справді дивне запитання. Інтерв'юер запитав мене, як я можу обчислити 1 + 2 + 3 + ... + 1000, лише використовуючи функції компілятора. Це означає, що мені заборонено писати програму та виконувати її, але я повинен просто написати програму, яка могла б примусити компілятора обчислити …

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

8
Найкраще введення в метапрограмування шаблонів на C ++? [зачинено]
Зачинено. Це питання не відповідає вказівкам щодо переповнення стека . Наразі відповіді не приймаються. Хочете вдосконалити це питання? Оновіть питання, щоб воно було тематичним для переповнення стека. Закрито 3 роки тому . Удосконаліть це питання Статичне метапрограмування (він же "метапрограмування шаблонів") - це чудова техніка С ++, яка дозволяє виконувати …

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.