3.4.6 delete操作符
delete操作符可以用于任何变量,将其设置成默认值0。
如果对动态数组使用delete,则删除所有元素,其长度变为0。
如果对静态数组使用delete,则重置所有索引。
如果对map类型使用delete,什么都不会发生。
但如果对map类型中的一个键使用delete,则会删除与该键相关的值。
下面给出一个delete的一个示例:
pragma solidity ^0.4.21;
contract sample {
struct Struct {
mapping (int => int) myMap;
int myNumber;
}
int[] myArray;
Struct myStruct;
function sample(int key, int value, int number, int[] array){
myStruct = Struct(number); //myMap不能被分配,所以在构造Struct时,我们忽略了myMap。
myStruct.myMap[key] = value; //这里设置myMap的键值
myArray = array;
}
function reset() {
delete myArray; //删除myArray,现在长度为0
delete myStruct; //myNumber现在是0,myMap保持原样。
}
function deleteKey(int key) {
delete myStruct.myMap[key]; //这里我们删除myMap的key
}
}