metaprogramming- все статьи тега


Заводной способ перехвата

В моем приложении Grails я установил плагин Quartz. Я хочу перехватывать вызовы каждого метода Quartz job class execute, чтобы сделать что-то до вызова метода execute (аналогично AOP перед Советом). В настоящее время я пытаюсь сделать этот перехват из doWithDynamicMethods закрытия другого плагина, как показано ниже: def doWithDynamicMethods = { ctx -> // get all the job classes application.getArtefacts("Job").each { klass -> MetaClass jobMetaClass = klass.clazz.metaCla ...

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

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

В C++ примеры SFINAE?

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

Возможно ли реализовать динамические геттеры / сеттеры в 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 + (++this.count); } }; var a = new MyObject('foo'); alert(a.value); // --> "Go away" a.value = 'bar'; alert(a.value); // --> "bar2" Тепе ...

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

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

Метапрограммирование на C++ и в D

механизм шаблонов в C++ только случайно стал полезен для метапрограммирования шаблонов. С другой стороны, D был разработан специально для облегчения этого. И, по-видимому, это еще легче понять (или так я слышал). У меня нет опыта работы С D, но мне любопытно, что вы можете сделать в D, и вы не можете в C++, когда речь заходит о метапрограммировании шаблонов? ...

Java custom annotation: сделать атрибут необязательным

Я определил свою собственную аннотацию @Target(value={ElementType.METHOD, ElementType.FIELD}) @Retention(RetentionPolicy.RUNTIME) public @interface MyCustomAnnotation { Class<?> myType(); } как, если вообще, я могу сделать атрибут необязательным ...

Поддерживает ли C++ счетчики времени компиляции?

в целях самоанализа, иногда я хотел бы автоматически назначить серийные номера типов, или что-то подобное. к сожалению, шаблонное метапрограммирование по существу является функциональным языком, и как таковое не имеет глобальных переменных или модифицируемого состояния, которое реализовало бы такой счетчик. или это? пример кода по запросу: #include <iostream> int const a = counter_read; counter_inc; counter_inc; counter_inc; counter_inc; counter_inc; int const b = counter_read; int ...

Как я могу динамически создавать методы класса для класса в Python [дубликат]

этот вопрос уже есть ответ здесь: добавление метода к существующему экземпляру объекта 17 ответов если я определяю небольшую программу python как class a(): def _func(self): return "asdf" # Not sure what to resplace __init__ with so that a.func will return asdf def __init__(self, *args, **kwargs): setattr(self, 'func', classmethod(self._func)) if __name__ == "__main__": ...