在Solidity中,声明但没赋值的变量都有它的初始值或默认值。
- boolean: false
- string :""
- int : 0
- uint : 0
- enum : 枚举中的第一个元素
- address : 0x0000000000000000000000000000000000000000(或address(0))
- function
- internal : 空白函数
- external : 空白函数
可以使用public变量的getter函数验证上面写的初始值是否正确
contract cVariable{
bool public _boll; // false
string public _string; //""
int public _int; // 0
uint public _uint; // 0
address public _address; // 0x0000000000000000000000000000000000000000
enum ActionSet { Buy, Hold, Sell}
ActionSet public _enum; // 第1个内容Buy的索引0
function fi() internal{} // 空白函数
function fe() external{} // 空白函数
}
- 映射mapping:所有元素都为其默认值的mapping
- 结构体struct:所有成员设为其默认值的结构体
- 数组array
- 动态数组:[]
- 定长数组:所有成员设为其默认值的定长数组
依然可以用public变量的getter函数验证上面写的初始值是否正确
uint[8] public _staticArray; // 所有成员设为其默认值的静态数组[0,0,0,0,0,0,0,0]
uint[] public _dynamicArray; // `[]`
mapping(uint => address) public _mapping; // 所有元素都为其默认值的mapping
// 所有成员设为其默认值的结构体 0, 0
struct Student{
uint256 id;
uint256 score;
}
Student public student;
delete a会让变量a的值变为初始值
bool public _bool2 = true;
function d() external {
delete _bool2; // delete 会让_bool2变为默认值,false
}