合约由多个结构组成:
- 状态变量
- 结构定义
- 修改器定义
- 事件声明
- 枚举定义
- 函数定义
合约结构
状态变量
编程中的变量是指可以包含值的存储单元。值可以在运行时更改。可以在代码中的多个位置使用变量,并且它们都将引用存储的值。
solidity提供两种类型的变量——状态变量和内存变量。
在合约中,没有在任何函数内声明的变量成为状态变量。状态变量存储合约的当前值。状态变量的内存是静态分配的,并且在合约生命周期内不能改变(分配的内存大小)。必须静态定义每个状态变量的类型。
状态类型的限定符:
- internal:默认情况下,如果没有指定任何内容,则状态变量具有internal限定符。意味这个变量只能在当前的合约函数和任何继承它们的合约中使用。这些变量不能被外部访问修改,但是可以查看。内部状态变量的示例如下:
int internal StateVariable;
- private:私有状态变量只能在声明它们的合约中使用。即使在派生合约中也不能使用。私有状态变量的示例如下:
int private privateStateVariable;
- public:公共状态变量可以被直接访问。公共状态变量的示例如下:
int public stateIntVariable;
- constant:常量状态变量不可变,在声明时必须赋初值。常量状态变量的示例如下:
bool constant hasIncome = true;
数据类型
solidity提供以下多种开箱数据类型:
- bool
- uint/int
- bytes
- address
- mapping
- enum
- struct
- bytes/String
结构
结构或结构体有助于实现自定义的用户数据类型。结构是一种复合数据类型,由多个不同数据类型的变量组成。结构不包含代码,只包含变量。solidity中的结构使用struct关键字。
struct myStruct{
//定义变量
string name;