3.4.6 delete操作符
delete操作符可以用于任何變量异吻,將其設(shè)置成默認(rèn)值0魁衙。
如果對動態(tài)數(shù)組使用delete悦陋,則刪除所有元素题涨,其長度變?yōu)?偎谁。
如果對靜態(tài)數(shù)組使用delete,則重置所有索引纲堵。
如果對map類型使用delete巡雨,什么都不會發(fā)生。
但如果對map類型中的一個鍵使用delete席函,則會刪除與該鍵相關(guān)的值铐望。
下面給出一個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不能被分配,所以在構(gòu)造Struct時茂附,我們忽略了myMap正蛙。
myStruct.myMap[key] = value; //這里設(shè)置myMap的鍵值
myArray = array;
}
function reset() {
delete myArray; //刪除myArray,現(xiàn)在長度為0
delete myStruct; //myNumber現(xiàn)在是0何之,myMap保持原樣跟畅。
}
function deleteKey(int key) {
delete myStruct.myMap[key]; //這里我們刪除myMap的key
}
}