一、状态变量
首先看状态变量,类似其他语言的成员变量,在Solidity中称为状态变量。之所以叫状态变量是因为Solidity是一门面向合约的语言,以太坊的交易本质其实是一中状态机,从一种状态到另一种状态。合约的本质也是在合适的条件触发交易。下图是一个合约中的状态变量:

二、局部变量
局部变量也叫本地变量,局部变量不仅仅是函数中的变量,参数也属于局部变量,包括入参和出参都是局部变量。如下图,状态变量和局部变量,状态变量只会出现在一个位置,局部变量可以是函数的入参,出参和函数体中定义的变量。

三、函数
Solidity函数与其他语言函数有所区别,如果函数有返回值,必须使用returns关键字加上函数参数的返回值类型列表。
另外需要注意的是Solidity有两个比较相近的关键字,一个是return,和其他函数一样用于返回值,另一个是returns,用于定义函数返回参数,注意不要混淆。
四、返回多值
关于返回值,Solidity和其他很多语言不一样,因为Solidity支持返回多值。如下图,实例:

五、构造函数
Solidity也有构造函数,就是和合约同名的函数,但只允许有一个,在合约创建时调用相关的代码完成初始化工作。

六、异常
在我们执行合约时经常会出现一些异常,都是EVM底层抛出的,像其他语言一样,Solidity也支持使用throw抛出异常,不同的是Solidity不支持异常捕获。抛出异常之后会回滚所有之前执行的操作。如下图,实例:

七、注释
Solidity支持两种注释方式,一中是单行注释,使用两个连续的双斜线。一种是多行注释,使用一个单斜线和一个星号作为开始,一个星号一个单斜线作为结束。

网友评论