Публикации по теме 'metaprogramming'


Fasterflect против HyperDescriptor против FastMember против отражения
Предположим, у меня есть тип со свойством Достижения , который я хочу установить пустым всякий раз, когда я вижу, что он возвращается методом. Сделать это с отражением довольно просто: С Fasterflect это выглядит так: Мне нравится этот API, он очень интуитивно понятен. А вот как это выглядит с HyperDescriptor и FastMember : Теперь давайте проверим это на 1 млн экземпляров MyTypeA и посмотрим, как они это сделают. И Fasterflect , и FastMember работали очень..

Прокси-шаблон легко и попрактиковаться
Прокси-объект может определять поведение всякий раз, когда мы взаимодействуем с объектом, например, когда мы получаем значение или устанавливаем значение. У нас есть объект учетной записи, который представляет мою учетную запись данных: const account = { name: "Julio", isPremium:false, isLogged: true } Пользователь не должен иметь возможности изменять свойства входа в систему или тип службы или назначать пустые значения каким-либо свойствам. Мы также должны проверить, не..

Метапрограммирование сетки и метки для Hone.jl
Hone.jl Метапрограммирование сетки и метки для Hone.jl Исправление моих сеток и добавление меток осей в мою графическую библиотеку для Джулии В прошлый раз, когда мы прекратили работу с Hone.jl, модульной объектно-ориентированной графической библиотекой, которая использует метапрограммирование для предоставления расширяемой платформы, мы столкнулись с довольно большим количеством проблем. Во-первых, сетки рисовались невероятно неточно, что делало их практически бесполезными. Это..

Начиная с макросов Scala 3: краткое руководство
Scala 3 , также известная под названием Dotty , будет выпущена в мае 2021 года. Одна из его флагманских функций - принципиальное метапрограммирование . Сюда входят макросы - создание кода во время компиляции . Макросы впервые появились в экспериментальном API со времен Scala 2.10. Несмотря на то, что API был экспериментальным, макросы стали полезным инструментом, используемым рядом библиотек. Scala - гибкий и масштабируемый язык; тем не менее, макросы позволяют еще больше..

Вопросы по теме 'metaprogramming'

Для чего в Руби
В Руби: for i in A do # some code end такой же как: A.each do |i| # some code end for не является методом ядра: Что такое « for » в рубине Есть ли способ использовать другие ключевые слова, чтобы делать подобные вещи?...
7904 просмотров
schedule 05.05.2022

Отступы для генерации кода
Часто программисты пишут код, который генерирует другой код. (Технический термин — метапрограммирование , но он более распространен. чем просто кросс-компиляторы; подумайте о каждой веб-странице PHP, которая генерирует HTML, или о каждом...
1155 просмотров
schedule 24.07.2022

Какие самые крутые примеры метапрограммирования вы видели в C++?
Какие самые крутые примеры метапрограммирования вы видели в C++? Какие практические применения метапрограммирования вы видели в C++?
9181 просмотров

Динамически обновлять метакласс ModelForm
Я надеюсь динамически обновлять встроенный метакласс ModelForm с моей точки зрения. Хотя этот код, по-видимому, обновляет список исключений в классе Meta, выходные данные as_p() , as_ul() и т. д. не отражают обновленное исключение Meta. Я...
11512 просмотров

Как динамически определить имя метода в Ruby
Есть ли в Ruby способ определить имя метода, аналогично тому, как метод «класса» возвращает тип объекта? Например: def example_method puts method_name end #=> "example_method"
481 просмотров
schedule 11.03.2022

Как работает этот устаревший метод?
Я пытался понять этот призыв: deprecate :new_record?, :new? который использует этот устаревший метод: def deprecate(old_method, new_method) class_eval <<-RUBY, __FILE__, __LINE__ + 1 def #{old_method}(*args,...
831 просмотров

Какова цель singleton_class.send и singleton_class.class_eval в этом примере метапрограммирования?
class Product < ActiveRecord::Base set_table_name 'produce' end module ActiveRecord class Base def self.set_table_name name define_attr_method :table_name, name end def self.define_attr_method(name, value) singleton_class.send...
1168 просмотров
schedule 22.08.2022

Условно изменить операторы C в исходном файле C
У меня есть файл C, в котором мы перемещаем инфраструктуру ведения журнала. Так if ( logging_level >= LEVEL_FINE ) printf("Value at %p is %d\n", p, i); становится do_log2(LEVEL_FINE, "Value at %p is %d\n", _ptr(p), _num(i));...
348 просмотров
schedule 30.10.2023

С ++ шаблон метапрограммирования, количество переменных-членов?
Возможно ли в C ++ определить количество переменных / полей в универсальном классе? Например // suppose I need metaclass number_members determines number of members struct example { int i, j; }; assert(number_members<example>::value==2);...
1091 просмотров
schedule 26.05.2022

Генерация кода Java (метапрограммирование, отражение, wtv)
Кто-нибудь знает инструмент для Java (что-то вроде codedom для С#), который позволяет генерировать код Java в файл .java? EDIT : я создаю платформу, основной целью которой является автоматизация операции. Дав некоторый ввод, я хочу сгенерировать...
2937 просмотров

Включение модуля Ruby в методы
В класс Foo я хотел бы включить метод Bar при определенных условиях: module Bar def some_method "orly" end end class Foo def initialize(some_condition) if !some_condition "bar" else class <<...
359 просмотров
schedule 04.03.2024

C++: ВЫ используете Loki или Boost для функторов?
Я читал книгу Александреску «Современный дизайн C++» и был очень впечатлен методами, которые он использует, поэтому я хотел добавить библиотека Loki для моего приложения. Однако после дальнейшего изучения я увидел, что boost, который я уже...
2227 просмотров
schedule 18.12.2022

Как я могу изменить функцию __cmp__ экземпляра (не в классе)?
Как я могу изменить функцию __cmp__ экземпляра (не в классе)? Ex: class foo: def __init__(self, num): self.num = num def cmp(self, other): return self.num - other.num # Change __cmp__ function in class works foo.__cmp__ = cmp...
435 просмотров
schedule 29.07.2022

Как я могу напечатать имя переменной и ее значение, не вводя имя дважды?
Когда вы отлаживаете, очень полезно сделать это: var = calc() print("var:", var) Есть ли язык, где это легко сделать? В C и C++ вы можете использовать оператор макроса stringify #, а в Ruby я нашел этот вопрос: Ruby — напечатать имя...
885 просмотров
schedule 25.03.2022

Более Ruby-подобный способ закодировать это?
У меня есть метод, который я вызываю, просрочен? который просто предназначен для проверки того, прошло ли более 24 часов с момента обновления моего объекта, и если да, то вернуть true. Вот мой метод, но, хотя он работает, он кажется грязным, может...
380 просмотров

C ++ 0x лямбды с параметрами шаблона?
Возможное дублирование: Можно ли создавать шаблоны лямбда-функций? Возможно ли иметь лямбда c ++ 0x с параметрами шаблона? Например: template <typename T> [=](const T *x) {} Что я пытаюсь сделать, так это закодировать...
2495 просмотров
schedule 13.10.2022

Ruby: передача блока в макрос класса, который определяет методы экземпляра
Я борюсь с кодом, который выглядит как приведенный ниже пример (но на самом деле делает что-то полезное). Блок, который передается def_my_method , конечно же, создается в контексте класса, когда я хочу оценить его в контексте экземпляра, имеющего...
1302 просмотров
schedule 01.03.2022

Сравните содержание, а не результаты процессов
Использование Ruby 1.9.2 Проблема Сравните содержание, а не результаты двух процедур. Я понимаю, что результаты не могут быть проверены из-за проблемы остановки , но это нормально; Я все равно не хочу проверять результаты. Например...
750 просмотров
schedule 03.01.2023

Патч для обезьян в C #
Можно ли расширить или изменить код класса C # во время выполнения? Мой вопрос конкретно вращается вокруг Monkey Patching / Duck Punching или Meta Object Programming (MOP), как это происходит в языках сценариев, таких как Groovy, Ruby и т. Д.
5380 просмотров
schedule 17.09.2022

Библиотека для временной модификации (основных) модулей Ruby
Однажды я наткнулся на библиотеку Ruby (я не уверен, что она когда-либо была упакована как гем), которая позволяла вам удобно применять временные модификации к модулям Ruby. Эти модификации будут активны только в блоках, выполняемых в объявлении...
156 просмотров
schedule 14.03.2023