благодаря магии Lisp и относительно простой макросу, эти два кода полностью эквивалентны это как если бы я сказал вам, что Clojurescript имеет нативную поддержку контрактов EVM Lisp позволяет вам сделать это реальностью. Макросы Lisp позволяют вам изменять сам язык.
В обоих случаях конечный результат — это конструктор, который дает мне объект, на котором я могу вызывать все эти функции. Но версия с использованием defcontract гораздо легче читается и пишется. Это позволяет вашей бизнес-логике сосредоточиться на том, что имеет значение, а ваш шаблонный код генерируется автоматически.
если бы вы писали код для нескольких контрактов, какой из двух примеров, которые я вам показал, вы бы предпочли писать снова и снова? что бы вы предпочли проверять в PR? макросы не решают все проблемы, но они являются мощным инструментом для снижения сложности вашей бизнес-логики.
Я забыл включить определение abi в первый скриншот, что буквально удваивает длину примера кода, лол. Ты понял суть. Читаемый код — это хорошо. Шаблонный код заставляет твой мозг пропускать важные вещи. Макросы помогают убрать шаблонный код, чтобы сделать твой код более читаемым.
2,52K