循环结构

Solidity 中的循环结构与 C++JavaScript 等大括号语言相同。

while 循环

WhileLoop.sol
运行
复制
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.24;

contract WhileLoop {
    function sum(uint n) public pure returns (uint) {
      uint res = 0;
      // 计算 1+2+...+n
      while(n > 0){
        res += n;
        n = n - 1;
      }
      return res;
    }
}

do while 函数

DoWhileLoop.sol
运行
复制
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.24;

contract DoWhileLoop {
    function sum(uint n) public pure returns (uint) {
      uint res = 0;
      // 计算 1+2+...+n
      do {
        res += n;
        n = n - 1;
      } while( n > 0);
      return res;
    }
}

for 循环

for 循环与 C++, JavaScript 等具有同样的语法:for(初始化表达式; 循环布尔表达式; 循环变量更新)

初始化表达式中可以声明一个局部循环变量,示例见下:

ForLoop.sol
运行
复制
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.24;

contract ForLoop {
    function sum(uint n) public pure returns (uint) {
      uint res = 0;
      // 计算 1+2+...+n
      for(uint i = 0; i <= n; i++) {
        res = res + i;
      }
      return res;
    }
}