(Часть 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();
}

Библиотеки — это полезные инструменты для переноса набора функций, которые многократно используются в нескольких написанных вами контрактах. Это отличный способ использовать существующую функциональность без многократного написания дополнительной логики для одной и той же функциональности.