025.Solidity入门——12流程控制语句

  1. if-else语句:是最常见的条件语句,用于在指定条件为 true 时执行代码块,否则执行另一个代码块。

//语法
if (条件) {
    // 如果条件为真,执行这里的代码        
} else {
    // 否则执行这里的代码
}

//示例代码
contract IfElseExample {
    function checkNumber(uint number) public pure returns (string memory) {
        if (number == 0) {
            return "零";
        } else {
            return "不是零";
        }
    }
}

  1. for循环语句:是一种重复执行代码的语句,通过一个初始表达式,一个条件表达式,以及一个递增表达式来控制循环的迭代次数。在每次迭代中,for循环会先执行初始表达式,然后判断条件表达式的值是否为真。如果为真,就会执行循环体,否则退出循环。每次循环结束后,会执行递增表达式,然后再重复以上步骤。

//语法
for(var i = 0; i < 10; i++) {
    // 执行 10 次
}

//示例代码
contract ForExample {
    function forExample() public pure {
        uint sum = 0;
        // 初始表达式:i = 0;循环条件:i < 10;递增表达式:i++
        for (uint i = 0; i < 10; i++) {
            sum += i;
        }
        // 最后累加的和为45
        assert(sum == 45);
    }
}

  1. while循环语句:它在给定条件为真时不断执行循环体。。

//语法
while (条件) {
    // 只要 条件 为真,就会不断循环执行代码块
}

//示例代码
contract WhileExample {
    uint256 sum;

    constructor() public {
        uint256 i = 1;
        sum = 0;
        // 计算1到10的累加和
        while (i <= 10) {
            sum += i;
            i++;
        }
    }

    function getSum() public view returns (uint256) {
        return sum;
    }
}

注释:在上面的WhileExample合约中,它在构造函数中使用了一个while循环计算1到10的累加和。变量i的初始值为1,每次循环累加和加上当前的i值,然后通过执行i++来增加i的值。当i的值大于10时,循环终止,sum的值就是1到10的累加和。

  1. do-while循环语句:和while循环语句类似,但是它会先执行一次循环内的代码,再判断循环条件是否成立,如果成立,则再次执行。

//语法
do {
    // 先执行一次代码块
} while (条件);

//示例代码
contract DoWhileExample {
    function doWhileExample() public pure {
        uint256 i = 0;
        do {
            i++;
            // 其他语句
        } while (i < 10);
    }
}

注释:在上面的DoWhileExample 合约中,变量 i 的初始值为 0,我们在循环语句体中对它进行了自增。条件表达式为 i < 10,所以当 i 大于等于 10 时循环结束。因此,循环语句体最多执行 10 次。

注意:在Solidity中没有内存溢出的概念,但是智能合约的执行消耗的 gas 会随着循环的次数增加而增加。如果循环次数太多,可能会超过智能合约的 gas 限制,从而导致智能合约的执行失败。所以使用 while 循环时需要注意死循环问题,需要特别注意编写代码,确保循环可以在一定的时间内结束。在大多数情况下,可以使用for循环或预先知道的循环次数的递推方法来解决问题。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值