Публикации по теме '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 просмотров
schedule
31.03.2022
Динамически обновлять метакласс ModelForm
Я надеюсь динамически обновлять встроенный метакласс ModelForm с моей точки зрения. Хотя этот код, по-видимому, обновляет список исключений в классе Meta, выходные данные as_p() , as_ul() и т. д. не отражают обновленное исключение Meta.
Я...
11512 просмотров
schedule
16.05.2022
Как динамически определить имя метода в 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 просмотров
schedule
03.04.2022
Какова цель 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 просмотров
schedule
22.01.2024
Включение модуля 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 просмотров
schedule
13.03.2022
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