(Часть V)
Это пятый блог в моей серии Solidity Learning, в которой рассказывается о циклах, о том, как писать собственные библиотеки и импортировать их для использования в ваших контрактах.
Что такое зацикливание?
Цикл в любом языке программирования — это метод, который объединяет повторения в одну сущность. Циклы гарантируют, что ваша бизнес-логика, которая должна повторяться n раз, может быть написана эффективно и компактно.
Зацикливание в Solidity
Если вы уже работали с языками программирования, циклы в Solidity почти такие же.
цикл for: пример цикла, который выполняется от 0 до 9
для (uint i = 0; i ‹ 10; i++){
//Сделай что-нибудь
}
цикл while: пример цикла, который выполняется от 0 до 9
иинт я =0;
в то время как (я ‹ 10) {
i++;
}
Использование операторов break и continue во время цикла:
Операторы Break и continue используются для выхода из цикла на основе определенного условия или пропуска выполнения каких-либо действий при определенном условии соответственно.
for(uint i =1; i ‹ 10; i++){
if(i %5 == 0)
ломать;
еще
Продолжать;
}
Выше приведен пример цикла, который завершится, когда i = 5.
Библиотеки и импорт
Библиотеки в Solidity могут быть написаны пользователем и импортированы в ваш код Solidity, чтобы повторно использовать их в нескольких контрактах. Библиотеки предоставляют вам возможность повторно использовать один и тот же набор функций в нескольких местах, не переписывая их снова и снова.
Вот пример библиотеки Mathematics, которую мы создали и импортировали в наш код, чтобы использовать некоторые из этих функций в нашем контракте.
Шаг 1. Используйте ключевое слово library, чтобы написать определение библиотеки.
библиотека Математика
Шаг 2. Определите функции, которые вы хотите добавить в свою библиотеку.
Вы можете определить общие функции, которые вы хотели бы импортировать/использовать в других контрактах.
function factorial(uint num) pure public return(uint){
uint fact = 1;
for(uint i=1; i‹=num; i++){
fact *= i;
}
return fact;
}
function Fivedivisible(uint num) pure public возвращает(uint) {
uint answer = num/5;< br /> вернуть ответ;
}
Я определил две функции — factorial и fivedivisible. Функция factorial возвращает факториал определенного числа, а функция fivedivisible возвращает частное после деления на 5.
Шаг 3. Напишите тестовый контракт для импорта определенной библиотеки.
Импортируйте библиотеку (укажите полный путь) в свой тестовый контракт. Мой тестовый контракт называется TestLibrary.
импортировать «browser/library.sol»; // В данном случае, поскольку я использую редактор ремиксов
Вы можете использовать ключевое слово using, чтобы связать определенный тип данных с библиотекой, чтобы вы могли вызывать функции, определенные в библиотеке для этих типов данных.
использование математики для uint;
Шаг 4. Напишите свои собственные функции контракта, чтобы вызывать библиотечные функции.
Чтобы вызвать функцию, определенную в библиотеке, напишите свои собственные контрактные функции и используйте параметр uint для вызова факториала и делимых функций.
function calcfact(uint _val) pure public возвращает (uint) {
return _val.factorial();
}
function calcfive(uint _val) pure public возвращает (uint) {
вернуть _val.fivedivisible();
}
Библиотеки — это полезные инструменты для переноса набора функций, которые многократно используются в нескольких написанных вами контрактах. Это отличный способ использовать существующую функциональность без многократного написания дополнительной логики для одной и той же функциональности.