title: 8. 变量初始值 tags: solidity basic wtfacademy WTF Solidity极简入门: 8. 变量初始值 我最近在重新学 Solidity,巩固一下细节,也写一个“WTF Solidity极简入门”,供小白们使用(编程大佬可以另找教程),每周更新 1-3 讲。 推特:@0xAAScience|@WTFAcademy 社区:Discord|微信群|官网 wtf.academy 所有代码和教程开源在 github: github.com/AmazingAng/WTF-Solidity 变量初始值 在 中,声明但没赋值的变量都有它的初始值或默认值。这一讲,我们将介绍常用变量的初始值。
title: 8. 变量初始值 tags: - solidity - basic - wtfacademy
我最近在重新学 Solidity,巩固一下细节,也写一个“WTF Solidity极简入门”,供小白们使用(编程大佬可以另找教程),每周更新 1-3 讲。
所有代码和教程开源在 github: github.com/AmazingAng/WTF-Solidity
在Solidity中,声明但没赋值的变量都有它的初始值或默认值。这一讲,我们将介绍常用变量的初始值。
boolean: falsestring: ""int: 0uint: 0enum: 枚举中的第一个元素address: 0x0000000000000000000000000000000000000000 (或 address(0))function
internal: 空白函数external: 空白函数可以用public变量的getter函数验证上面写的初始值是否正确:
bool public _bool; // 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{} // internal空白函数 function fe() external{} // external空白函数
mapping: 所有元素都为其默认值的mappingstruct: 所有成员设为其默认值的结构体array
[]可以用public变量的getter函数验证上面写的初始值是否正确:
// Reference Types 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操作符delete a会让变量a的值变为初始值。
// delete操作符 bool public _bool2 = true; function d() external { delete _bool2; // delete 会让_bool2变为默认值,false }
https://www.aiknowledge.cn/images/WTF-Solidity/8-1.webp
delete操作后的默认值https://www.aiknowledge.cn/images/WTF-Solidity/8-2.webp
这一讲,我们介绍了Solidity中变量的初始值。变量被声明但没有赋值的时候,它的值默认为初始值。不同类型的变量初始值不同,delete操作符可以删除一个变量的值并代替为初始值。