一、示例

和其他语言一样,Solidity使用条件语句和循环语句来控制流程。 我们先讨论条件语句,之后是循环语句。 但这里需要提一下:截止到这个版本,Solidity不支持switch和go。


pragma solidity 0.4.8;

contract ControlStructure {

    address public a;

    function ControlStructure(uint input1) {
        
        // if-else 示例
        if(input1 == 2)
            a = 1;
        else
            a = 0;

        // while 示例    
        while(input1 >= 0){
            if(input1 == 5)
                continue; //本轮循环不往下执行,但会继续下一轮循环。 
            input1 = input1 - 1;   
            a++;
        } 


        // for 循环
        for(uint i=0; i<=50; i++)
        {
            a++;
            if(a == 4) break;
        }  

        // do while 示例
        do{
            a--;
        } (while a>0);

        // 条件运算符示例
        bool isTrue = (a == 1)? true: false;

        
        // 注意,if 只能使用布尔值作为条件,其他类型都会出错,系统不会做自动转换
        if (1) { 
           ... 
        }
    }

}

二、条件语句

在solidity中,条件语句格式为:

if (condition) statement 

条件必须使用括号括起来。如果条件测试通过后需要执行多行语句,则必须使用{}括起来。 我们建议不管一行还是多行,都要使用{}。

注意,与 C 和 JavaScript 不同, Solidity 中非布尔类型数值不能转换为布尔类型,因此 if (1) { ... } 的写法在 Solidity 中 无效

如果使用else,则else与距离最近的if配对。这和其他语言是类似的。

三、循环语句

当条件为true时,while循环执行一条或者一个语句块,格式:

while(condition) statement

如果condition一开始就是false,则statement就不会被执行。 如果希望statement至少被执行一次,则可使用

do statement while(condition);

这个语句会先执行statement,然后验证条件。

四、确定循环

for允许执行给定次数的循环:

int a = 0;
for(int i=0; i<10; i++) {
	a += i;
}

五、中断循环

和java一样,solidity也可以使用break和continue来控制循环语句。 break是跳出包含break的最内层的循环,不再继续执行。 continue则是中断当前控制流,重新回到最内层循环的顶部。


感谢您对本文的关注,如果您对区块链技术有兴趣,可以加入我们一起探讨, 请扫码关注“可可链”的微信公众号,并留言“加入可可链”。

本文欢迎转载,转载时请注明本文来自 微信公众号“可可链”。