Свързани публикации 'metaprogramming'
Метапрограмиране за тестване на потребителския интерфейс: PBT и абстрактно композиционно сключване
Както споменахме в предишен блог , постигнахме възможността да откриваме UI компоненти в приложение TornadoFX.
Тъй като преработваме и прехвърляме кодовата база към Gradle в подготовка за генериране на тестове, трябваше да помисля върху тестване, което може да бъде генерирано без интелигентност, но може да бъде достатъчно информативно, за да си струва да бъде анализирано. Отидох на моб сесия на Chicago KUG с хора, много по-умни от мен (и с опит в писането на тестове в няколко рамки),..
Нов декоратор на клас „dataclass“ в Python3.7
Докато се натъквах на новите функции, добавени в Python 3.7, новодобавеният модул привлече вниманието ми, който е известен като „класове от данни“. Този модул излага декоратор на клас, наречен „dataclass“, който обвива дефиницията на класа и мирише много подобно на „collections.namedtuple“. На пръв поглед изглеждаше като чиста магия, защото според документацията прави черна магия върху „анотации“, които бяха добавени на python3.5 и инжектира методи на клас като „__init__“, „__repr__“ и..
Решаване като робот. НЕ! (Булев израз в Ruby)
Понякога трябва да създаваме досадни „правила“, за да вземаме решения, когато кодираме неща като това
if foo & bar & a.eql?('foo') || foo_bar == bar || ... # and so on
Така че, за да го запазим „четлив“, трябва да направим някои подобрения, като създаване на методи за повторно използване на някои изрази или просто влагане на изрази, за да избегнем дълги редове код. Но, ако мислим като „машина“, трябва да интерпретираме „истински“ и „фалшиви“ стойности (двоични стойности 1,0)..
Метапрограмиране с React
Целта не е да навлизаме в подробности какво представлява метапрограмирането и неговите техники, а само да видим пример как да го приложим в React.
Това е първата ми публикация в тази фантастична среда и бих искал да напиша малко за една техника, която вече сме използвали веднъж в живота си (от програмист), но която може да не знаем в детайли, метапрограмиране !
Кодът по-долу е пример за това как да използвате конструкцията Proxy и API Reflect в рамките на компонент на..
Метапрограмиране в JavaScript с jscodeshift
Част 1: Как да анализирате и модифицирате вашите програми
Метапрограмирането е мощен, но недооценен инструмент. Въпреки че много широко използвани инструменти за разработка го използват под капака, интересът към метапрограмирането непрекъснато намалява (поне според данните на Google Trends):
Може да има много причини зад тенденцията. Преди това беше доста популярен инструмент в областите, в които днес машинното обучение процъфтява. Тъй като инструментите за разработка стават все..
Свързани въпроси 'metaprogramming'
Защо не мога да използвам attr_accessor вътре в инициализацията?
Опитвам се да направя instance_eval , последвано от attr_accessor вътре в initialize , и продължавам да получавам това: ``initialize': undefined method 'attr_accessor'`. Защо това не работи?
Кодът изглежда така:
class MyClass
def...
5184 изгледи
schedule
23.09.2022
Динамични параметри за метапрограмиране в JavaScript?
Искам да делегирам няколко метода от един JavaScript-обект на друг. Така че си помислих да използвам метапрограмиране, за да не се дефинират няколко метода само като делегати. Досега стигнах до този метод:
function delegate_to(_method, _obj) {...
590 изгледи
schedule
23.09.2022
Извлечете ClassSymbols за границите на параметрите на метода
Опитвам се да извлека ClassSymbol s за всички граници на параметрите на типа на метод.
Решението, което измислих:
Внедряване на анотации на макроси:
@compileTimeOnly("Compile-time only annotation")
class classSyms extends...
41 изгледи
schedule
14.09.2022
Модификацията на метаклас на Grails не е надеждна в рамките на единични тестове
В проект на grails 2 използвам програмирането на метакласове на Groovy, за да добавя някои методи към моите класове на домейн.
Всичко работи добре по време на изпълнение и мога да изпълнявам моите интеграционни тестове добре.
Но за единичните...
991 изгледи
schedule
03.10.2022
включване на модул към клас с клас метод, препращащ към модула, който ще бъде включен
Имам следния пример
class Test
configure_helper
end
module ConfigureHelper
module ClassMethods
def configure_helper
end
end
end
ConfigureHelper има още малко функционалност, която ще разшири класа с ClassMethods, в който е...
131 изгледи
schedule
08.10.2022
Как да използвам boost::mpl за съставяне на политики?
Използвал съм нещо като следното, за да съставя политики за моето приложение:
Класовете правила изглеждат така:
struct Policy {
static void init();
static void cleanup();
//...
};
template <class CarT, class CdrT>
struct Cons {...
2250 изгледи
schedule
22.11.2022
Може ли Java Classloader да пренапише байт кода на (само тяхното копие на) системни класове?
Така че имам програма за зареждане на класове (MyClassLoader), която поддържа набор от "специални" класове в паметта. Тези специални класове се компилират динамично и се съхраняват в байтов масив в MyClassLoader. Когато MyClassLoader бъде помолен за...
5994 изгледи
schedule
15.10.2022
Динамично създаване на клас метод
Пиша метод на клас, за да създам друг метод на клас. Изглежда има известна странност в това как class_eval и instance_eval работят в контекста на метод на клас. За да илюстрирам:
class Test1
def self.add_foo
self.class_eval do # does...
928 изгледи
schedule
01.11.2023
SystemStackError - нивото на стека е твърде дълбоко: Използване на метапрограмиране с ActiveRecord
Трябва да получа всички способности за current_user в :json за моето основно приложение. Така че първата идея беше да добавим нещо като това:
def receive_user_abilities # we will return onty hash for works and tasks
w =...
348 изгледи
schedule
03.11.2022
съвпадение на множество типове за разрешаване на специализация на шаблон
Накратко отхвърлете факта, че нормалното претоварване на функциите ще служи по-добре на този пример. Това е предназначено само като начин да научите за програмирането на шаблони. Като каза това, добре дошли сте да коментирате ползите/разликите,...
3339 изгледи
schedule
04.12.2023
Как се реализира super() в Python 3?
Чудя се как е внедрен новият супер в Python 3.
Този въпрос се роди в главата ми, след като направих малък пример и получих странна грешка. Използвам Pyutilib Component architecture (PCA) и съм направил моя персонализиран метаклас за стимулиране...
2893 изгледи
schedule
05.12.2023
Как да използвате define_method вътре в initialize()
Опитвате се да използвате define_method вътре initialize , но получавате undefined_method define_method . какво правя грешно
class C
def initialize(n)
define_method ("#{n}") { puts "some method #{n}" }
end
end
C.new("abc")...
11645 изгледи
schedule
12.12.2023
c++11 променливо програмиране, как да дефинираме кула от вектори
Как (ако е възможно) мога да използвам c++11 променливо програмиране, за да дефинирам поредица от vector в тяло на функция (или с други думи, поредица от N -измерни масиви с намаляващи N до 0), като променливите по-долу?...
1393 изгледи
schedule
15.12.2023
Създаване на подобни функции с помощта на Lisp макрос
В работата си се опитвам да използвам макроси в Common Lisp и имам някои въпроси. Имам две функции
(defun when-tagflag ()
(when (= tagflag 1)
(setf tagflag 0)
(push tagbuf taglist)
(setf tagbuf "")))
(defun when-attrflag ()
(when...
111 изгледи
schedule
06.12.2023
Excel VBA програмно добавя потребителска форма на код
Имам труден проблем с моя VBA-код. Ситуацията е, че имам ръчно създаден потребителски формуляр. Добавям контроли към потребителската форма с макрос и работи добре за мен. Но сега също трябва да добавя код на събитие към потребителския формуляр....
1787 изгледи
schedule
29.10.2023
Метапрограмирането на шаблони по-бързо ли е от еквивалентния C код?
Метапрограмирането на шаблона по-бързо ли е от еквивалентния C код? (Говоря за производителността по време на изпълнение) :)
4703 изгледи
schedule
01.01.2024
липсва константа за спасяване на ruby?
преди няколко месеца използвах някаква ruby библиотека (не мога да си спомня коя точно, за съжаление)
Бях изненадан да видя, че ми позволи да инициализирам неговия екземпляр с нещо подобно:
Lib::SOMETHING(args)
Наистина не разбирам как...
645 изгледи
schedule
05.01.2024
Генериране на клаузи за изискване с макроси на Racket
Добре, трябва да съм много глупав. Опитвам се да създам макрос (част от по-голямо начинание), който при дадена функция я обгръща в свой собствен подмодул, след което я require s, така че функциите, дефинирани по този начин, да не могат да се...
162 изгледи
schedule
05.01.2024
Автоматично добавяне на функционални префикси към C++ функции
Пренасям малка C++ кодова база за извикване на графичната карта чрез CUDA. CUDA изисква всички функции да бъдат добавени с __host__ __device__ , за да могат да се извикват както от CPU, така и в кода на ядрото на GPU. напр.
void foo() {} //...
162 изгледи
schedule
10.01.2024
Внедряване на AnyMap и време за изпълнение на `struct Port(u32);`
Четох „24 days of Rust“ и примера за AnyMap използване току-що взриви ума ми. Разгледайте следния код:
#[deriving(Show)]
struct Port(u32);
#[deriving(Show)]
struct ConnectionLimit(u32);
Казва:
Тук типовете Port и...
155 изгледи
schedule
18.11.2023