Изучение потока управления Solidity: методы и примеры кода для смарт-контрактов

«Поток управления Solidity» относится к управлению и направлению выполнения программы на языке программирования Solidity, который используется для разработки смарт-контрактов в блокчейне Ethereum. Вот несколько методов, обычно используемых для управления потоком управления в Solidity, а также примеры кода:

  1. Инструкция If:
    Инструкция if позволяет условно выполнить блок кода на основе заданного условия.

    function checkNumber(uint256 num) public pure returns (string memory) {
    if (num > 10) {
        return "Number is greater than 10";
    } else {
        return "Number is less than or equal to 10";
    }
    }
  2. Цикл for:
    Цикл for используется для перебора определенного диапазона или коллекции элементов.

    function sumArray(uint256[] memory numbers) public pure returns (uint256) {
    uint256 sum = 0;
    for (uint256 i = 0; i < numbers.length; i++) {
        sum += numbers[i];
    }
    return sum;
    }
  3. Цикл while:
    Цикл while выполняет блок кода повторно, пока заданное условие истинно.

    function countDown(uint256 start) public pure returns (uint256) {
    uint256 count = start;
    while (count > 0) {
        count--;
    }
    return count;
    }
  4. Цикл Do-While:
    Цикл do- while похож на цикл while, но перед проверкой условия он выполняет блок кода как минимум один раз.

    function printNumbers(uint256 limit) public pure {
    uint256 i = 1;
    do {
        // Print the value of i
        i++;
    } while (i <= limit);
    }
  5. Инструкция Switch:
    Инструкция переключения позволяет выполнять несколько путей кода в зависимости от значения переменной.

    function getDayName(uint256 day) public pure returns (string memory) {
    string memory dayName;
    switch (day) {
        case 1:
            dayName = "Sunday";
            break;
        case 2:
            dayName = "Monday";
            break;
        // Add more cases for other days
        default:
            dayName = "Invalid day";
            break;
    }
    return dayName;
    }