「这是我参与2022首次更文挑战的第5天,活动详情查看:2022首次更文挑战」。
以太坊中Solidity行 · 大金刚境:语法详解#注释和整型
众所周知,以太坊开发拥有四种境界:金刚境,指玄境,天象境以及陆地神仙。
昨天我们将测试以及开发环境搭建好算是达到了真金刚的境界,今天我们就来学习Solidity的语法来达到大金刚境界。
一、注释
注释主要分为代码注释以及文档注释。下面我们来介绍这两种注释。
-
代码注释:
- 单行注释
//单行注释:下面是版本号 pragma solidity >=0.7.0 <0.9.0;- 多行注释
/* 这是多行注释 多行注释 注释 */ contract ReganYue { } -
文档注释:
- 单行注释为 ///
- 多行注释为每行注释开头都添加一个星号 '*'。
contract Regan { } /// hello /** *hello *ReganYue */
二、整型
solidity存在有符号和无符号的整型,这个应该容易理解,但是它与其它传统语言不一样的是它存在步长。这个步长表示该变量占用内存空间的大小,其越大,占用的内存空间也就越大,同时运行所需要的手续费也越多。所以当我们确定一个整型数据的上限后,需要定义合适的步长,避免手续费过多。
我们可以看到下面这个合约执行结果发现默认步长是256。
同时,我们需要注意的是,solidity的整型也具备除法截断特性。
contract Regan {
function add(uint x,uint y) public pure returns(uint z){
return x + y;
}
function division(uint x,uint y) public pure returns(uint z){
return x / y;
}
}
比如我们写一个除法函数,可以看到执行7除以3时,输出结果是2.
这就是我们所说的除法截断。
另外因为整型的空间是有限的,所以必定会存在溢出。
根据网络上的资料,老版本的solidity存在上溢和下溢,那么它存在的上溢和下溢是什么情况呢?
上溢就是一个整型变量到达它的上限,再给他加上一个正值,那么输出结果应该是什么?答案是变量值与正数的和-该类型的上限,比如uint8 就是2的7次方。
下溢就是一个整型变量到达它的下限,再给它减去一个正值,那么输出结果就可能会变成一个更大的值,输出结果是它的上限减去该正值,比如uint8 就是2的7次方。
但是我在较新版本的solidity中执行,发现如果溢出就会报错,该操作不会被执行。
三、值类型和引用类型
- 值传递:简而言之就是做一份副本,对它进行操作不会改变原数据。
- 引用传递:这个是指向原数据的,对它进行改动会修改原数据。
值类型包括整型、布尔类型、地址类型、枚举类型、函数类型、定长字节数组。引用类型包括不定长字节数组、字符串、数组、结构体。
如果一个变量占用的空间比较大,如果采用值传递,占用的空间会更大,这时我们应该采用引用传递。