美文网首页
Solidity基础教程5——逻辑语句

Solidity基础教程5——逻辑语句

作者: prophet__ | 来源:发表于2020-12-16 23:37 被阅读0次

本教程使用的开发环境是一款在线编译器——ChainIDE,具体的使用方法在之前的文章当中已经有讲解过,有需要的同学可以自行查看。

网址:https://eth.chainide.com/

序言

智能合约是不可修改的代码,同时也是涉及到资金、决策、事件的程序,需要具备非常高的稳定性。

它就好像我们在日常使用中对商品分级一样,有商业级、工业级、军用品级。作为一个需要非常稳定功能的语言,solidity对逻辑语句的要求是能稳定实现代码的逻辑,同时不出现歧义。

它沿用了C和JS的一些语言特性,但是又有略微的不同,今天就来向大家一个个介绍一下。

条件语句

在程序当中,判断条件是最容易出现的逻辑情况,soliditiy的if条件语句与其他基本相同,但要注意的是,solidity不支持类似于c语言内的switch功能。

if&&else

if (条件表达式) {
   被执行语句(如果条件为真)
} else {
   被执行语句(如果条件为假)
}

if (条件表达式 1) {
   被执行语句(如果条件 1 为真)
} else if (条件表达式 2) {
   被执行语句(如果条件 2 为真)
} else if (条件表达式 3) {
   被执行语句(如果条件 3 为真)
} else {
   被执行语句(如果所有条件为假)
}

作为程序语言当中最基础的条件判断语句,它会非常经常出现在程序当中。当有多个else if条件嵌套时,要注意每个条件之间的关系,尽量避免出现存在交集的条件表达式。

还有一点与其他程序语言不一样的是,在其他语言当中往往会有while(1),if(1)这种写法,但是soilidity当中不支持不同类型默认转换为布尔型的这种写法,所以在编译时会报错。

循环结构

for循环

作为程序里最基本的循环,for循环在solidity当中的应用非常的广泛。由于缺乏一个简便的数组赋值方式,在对变长数组赋值时往往会用到for循环。

    uint[] a;
    function for_example(uint number) public 
    {
        for(uint i=0; i<number;i++)
        {
            a.push(i);
        }
    }

    function output_a() view public returns(uint[] memory)
    {
        return a;
    }

在例程当中,演示了一个对不定长数组进行添加值的操作,通过数组自带的push函数进行对a数组值的添加,在output_a当中获得当前a数组的内容。

由于a数组是在函数外定义的,此时的a的储存位置为storage,因此每次调用for_example的时候a数组内的值是会不断累加的。

tips:大家可以看到,在这个示例当中我把对数组的内容修改和对数组内容的查看分成了两个部分,这也是solidity的语言特性之一。

while和do……while

除了for循环以外,我们在程序内调用最多的还有while循环,while循环和do……while循环的最大区别是先进行循环,还是先进行条件语句判断。

while(表达式){
   程序语句
}

do{
  程序语句
}while(表达式)

在表达式为true时才会进入循环或者重复下一个循环,如果表达式的值为false则跳出循环。

break和continue

前面写了关于循环的内容,这里讲一些关于如何跳出循环的方式。

break表示的是跳出这一层循环,直接从break这里停止,下面的程序就不会运行了。continue表示的是跳出这一次循环,也就是重新从头开始循环。

在有多层循环嵌套的情况下,关键字的作用效果取决于它在哪一层循环的作用域内,这里我使用一个例子做一下讲解。

    function multi_circulation() public pure returns(uint,uint)
    {
        uint d;
        uint b=0;
        for(uint i=0;i<10;i++)
        {
            d=0;
            while(d<10)
            {
                d++;
                b++;
                if(b%5==0)
                {
                    break;
                }
            }
        }
        return (d,b);      //d为5,b为45
    }

在这个函数当中,我们定义了两个变量,分别是d和b。在for循环内有一个i=4时跳过本次循环的语句,因此for循环只执行了9次。

表面上来看,d的值控制着内部的while循环,但实际上每次都是里面的条件语句触发从而跳出循环,每次b的值+5后就会跳出while循环。

如果对流程不清楚的同学可以自己再模拟一下。

tips:除了break和continue以外,还有一种方式可以跳出循环,如果是在函数内,使用return (程序语句)可以直接返回函数的值。

结语

基础教程部分即将就要结束了,在基础教程当中我们学习了关于合约结构、值类型、运算、映射和逻辑语句的部分。

在基础教程的最后,我们将使用一个实际的例子来带大家将这些内容结合到应用场景里,帮助大家更好地理解solidity。

相关文章

  • Solidity基础教程5——逻辑语句

    本教程使用的开发环境是一款在线编译器——ChainIDE,具体的使用方法在之前的文章当中已经有讲解过,有需要的同学...

  • 『Python基础练习题』day02

    判断下列逻辑语句的True, False 求出下列逻辑语句的值 下列结果是什么? while 循环语句的基本结构?...

  • 第二章:控制结构和函数

    条件表达式 语法结构: if (判断条件) {逻辑语句} else {逻辑语句} 在scala中, if/els...

  • 智能合约语言 Solidity 教程系列5 - 数组介绍

    【汇新云】为大家定期更新文章,【汇新云】IT人的产业链平台 Solidity 教程系列第5篇 - Solidity...

  • T-SQL基础2

    1、IF-ELSE逻辑判断语句 语法:IF(条件) BEGIN 语句1,语句2,……语句n END ELSE BE...

  • Solidity基础教程3——引用类型

    本教程使用的开发环境是一款在线编译器——ChainIDE,具体的使用方法在之前的文章当中已经有讲解过,有需要的同学...

  • Solidity基础教程1——整体结构

    本教程使用的开发环境是一款在线编译器——ChainIDE,具体的使用方法在之前的文章当中已经有讲解过,有需要的同学...

  • Solidity基础教程2——值类型

    本教程使用的开发环境是一款在线编译器——ChainIDE,具体的使用方法在之前的文章当中已经有讲解过,有需要的同学...

  • Python基础2

    条件语句 if语句 elif语句 应用场景 else语句 逻辑运算 注意: 循环 while break和cont...

  • Swift中的逻辑分支

    简介 逻辑分支即常用的 if、switch、三目这些通过逻辑判断后决定后面执行什么的逻辑语句,通过分支语句可以控制...

网友评论

      本文标题:Solidity基础教程5——逻辑语句

      本文链接:https://www.haomeiwen.com/subject/veqbgktx.html