Solidity源文件结构
solidity源文件以*.sol命名,源文件内包含 合约定义,导入指令,版本杂注。
版本杂注
版本杂注说明该代码是针对于某个版本的编译器的,以免未来编译器版本更新引起不必要的错误。版本杂注卸载源文件的第一行例如:pragma solidity ^0.4.0 ,说明该原文件只能被不低于0.4.0版本,低于0.5.0版本的编译器编译。
导入指令
solidity可以通过指令:import “目标文件路径” 来导入其他源文件内容。目标文件路径若为" ./ "(当前文件夹下)或 " ../ "(父文件夹)开头,则表示是相对文件路径。
合约定义
即我们编写的智能合约,里面含有编写的代码。
例如:
contract MyContract{
// 合约代码
}
合约结构
solidity中的合约类似于面对对象编程语言中的类。一个合约中可以包含状态变量,函数,函数修饰器,事件,结构类型和枚举类型的声明,并且合约可以从其他合约处继承。
状态变量
状态变量是永久地存储再合约中的值,相当于类中的实例变量。声明方式:变量类型 变量名 (= 变量值) --> uint variable = 1;
函数
函数是合约中的可执行单元,可通过调用函数的方式来执行合约中的代码(与面对对象语言不同,solidity中没有main函数,在没人调用函数时合约中的代码是不会执行的)
声明方式:
function 函数名(变量类型 变量名,) 函数对外可见性 函数性质 函数修饰器 returns (返回值类型1 返回值1 ,返回值类型2 返回值2){
//函数代码
return 返回的值
}
函数的调用可以发生在合约的内部和外部。
函数修饰器
函数修饰器是一种用来给函数添加一些功能的工具(可以类似看做一种特殊函数),函数修饰器的代码会在调用函数时,在函数代码执行之前执行。
声明方式:
modifier 修饰器名字(){
//修饰器内容,一般是一个判断语句,来约束函数
_;
}
事件
事件是能方便调用以太坊虚拟日志功能的接口
声明方式:
//
结构类型:
结构类型是将几个不同类型的变量打包在一起的容器(相当于结构体)
定义
struct 结构体名字{
变量类型1 变量名字1 ;变量类型2 变量名字2;****
变量类型n 变量名字n;
}
枚举类型
如果说结构类型是由一系列变量构成的自定义类型,那么枚举类型就是由一定数量的常量构成的自定义类型
定义方式: enum 枚举名字 { 常量1,常量2 , ,常量n }
网友评论