Skip to content

循环语句

Solidity 中,有两种类型的循环语句:for 循环和 while 循环,它们分别指定在执行期间需要重复执行的语句块。

Solidity 的循环语句与 JavaC++ 等语言类似。

for 循环

for 循环在执行期间重复执行指定数量的语句块。其语法如下所示:

solidity
for ( initialization ; condition ; increment ) {
   statement(s);
}

在语法中:

  • initialization:初始化语句块设置起始值,通常为一个计数器变量。
  • condition:条件语句块定义循环的结束条件,当条件为false时跳出循环。
  • increment:增量语句块增加计数器变量的值。
  • statement(s):运行在每次迭代期间需要执行的语句。

以下是一个 for 循环的运用场景,它向数组中添加元素:

solidity
// 添加元素到数组
pragma solidity ^0.5.0;

contract ForLoopExample {
    uint[5] public elements;

    function addElements() public {
        for (uint i = 0; i < elements.length; i++) {
            elements[i] = i + 1;
        }
    }
}

在此示例中,我们从 0 开始,以增量的方式向数组 elements 添加元素,当 i 等于数组长度时循环将停止。

while 循环

while 循环是定义一个满足条件的布尔表达式,只要该表达式的值为真,循环就会继续执行。while 循环的语法如下所示:

solidity
while(condition) {
   statement(s);
}

在语法中:

  • condition:条件语句块定义循环的结束条件,当条件为 false 时跳出循环。
  • statement(s):运行在每次迭代期间需要执行的语句。

以下是一个 while 循环的使用示例,该示例规定了数值计数器 n 小于 10,则累加所有数字:

solidity
pragma solidity ^0.5.0;

contract WhileLoopExample {
    uint public n = 0;
    uint public sum = 0;

    function addNumbers() public {
        while (n < 10) {
            sum += n;
            n++;
        }
    }
}

在此示例中,我们定义了一个循环,当数字计数器 n 小于 10 时累加所有数字并增加计数器 n 的值。