Solidity break 与 continue
Solidity 循环语句支持 continue 和 break,用来改变循环流程。
- continue – 跳出本次循环,继续执行接下来的循环
- break – 跳出循环(或跳出代码块)
1. break 示例
// SPDX-License-Identifier: SimPL-3.0 pragma solidity ^0.7.0; contract SolidityTest { uint storedData; constructor() { storedData = 10; } function getResult() public pure 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; // break 语句跳出循环 } } 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); } }
运行上述程序,输出结果:
0: string: 3
2. continue 示例
// SPDX-License-Identifier: SimPL-3.0 pragma solidity ^0.7.0; contract SolidityTest { uint storedData; constructor() { storedData = 10; } function getResult() public pure returns(string memory){ uint n = 1; uint sum = 0; while( n < 10){ n++; if(n == 5){ continue; // 当n的和是5时,跳过n。 } 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; // break跳出循环 } } 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); } }
运行上述程序,输出结果:
0: string: 49
Solidity支持条件语句,让程序可以根据条件执行不同的操作。条件语句包括:ifif...elseif...else ifSolidity 条件语句包括如下形式:Solidity – if语句Solidity ...