- Solidity 教程
- Solidity - 主页
- Solidity - 概述
- Solidity - 环境设置
- Solidity - 基本语法
- Solidity - 首次应用
- Solidity - 评论
- 坚固性 - 类型
- Solidity - 变量
- Solidity - 可变范围
- Solidity - 运算符
- 坚固性 - 循环
- Solidity - 决策
- 坚固性 - 弦乐
- Solidity - 数组
- Solidity - 枚举
- Solidity - 结构
- Solidity - 映射
- 坚固性 - 转换
- Solidity - 以太币单位
- Solidity - 特殊变量
- Solidity - 风格指南
- 实体函数
- Solidity - 函数
- Solidity - 函数修饰符
- Solidity - 查看函数
- Solidity - 纯函数
- Solidity - 后备函数
- 函数重载
- 数学函数
- 加密函数
- Solidity 常见模式
- Solidity - 提款模式
- Solidity - 限制访问
- 坚固进阶
- Solidity - 合约
- 坚固性——继承
- Solidity - 构造函数
- Solidity - 抽象合约
- Solidity - 接口
- Solidity - 库
- 坚固性 - 装配
- Solidity - 活动
- Solidity - 错误处理
- Solidity 有用资源
- Solidity - 快速指南
- Solidity - 有用的资源
- 坚固性 - 讨论
Solidity - 循环控制
Solidity 提供了处理循环和 switch 语句的完全控制。可能存在这样的情况:您需要在未到达底部的情况下退出循环。也可能存在这样的情况:您想跳过代码块的一部分并开始循环的下一次迭代。
为了处理所有此类情况,Solidity 提供了break和continue语句。这些语句分别用于立即退出任何循环或开始任何循环的下一次迭代。
中断语句
Break语句是与switch语句一起简要介绍的,用于提前退出循环,打破封闭的大括号。
流程图
Break 语句的流程图如下所示 -
例子
以下示例说明了将break语句与while 循环一起使用。
pragma solidity ^0.5.0; contract SolidityTest { uint storedData; constructor() public{ storedData = 10; } function getResult() public view returns(string memory){ uint a = 1; uint b = 2; uint result = a + b; return integerToString(result); } function integerToString(uint _i) internal pure returns (string memory) { if (_i == 0) { return "0"; } uint j = _i; uint len; while (true) { len++; j /= 10; if(j==0){ break; //using break statement } } bytes memory bstr = new bytes(len); uint k = len - 1; while (_i != 0) { bstr[k--] = byte(uint8(48 + _i % 10)); _i /= 10; } return string(bstr); } }
使用Solidity First Application章节中提供的步骤运行上述程序。
输出
0: string: 3
继续语句
continue语句告诉解释器立即开始循环的下一次迭代并跳过剩余的代码块。当遇到continue语句时,程序流程立即转到循环检查表达式,如果条件成立,则开始下一次迭代,否则控制退出循环。
例子
此示例说明了continue语句与 while 循环的使用。
pragma solidity ^0.5.0; contract SolidityTest { uint storedData; constructor() public{ storedData = 10; } function getResult() public view returns(string memory){ uint n = 1; uint sum = 0; while( n < 10){ n++; if(n == 5){ continue; // skip n in sum when it is 5. } sum = sum + n; } return integerToString(sum); } function integerToString(uint _i) internal pure returns (string memory) { if (_i == 0) { return "0"; } uint j = _i; uint len; while (true) { len++; j /= 10; if(j==0){ break; //using break statement } } bytes memory bstr = new bytes(len); uint k = len - 1; while (_i != 0) { bstr[k--] = byte(uint8(48 + _i % 10)); _i /= 10; } return string(bstr); } }
使用Solidity First Application章节中提供的步骤运行上述程序。
输出
0: string: 49
Solidity_loops.htm