【Solidity学习笔记】delete操作符

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
    }

}

你可能感兴趣的:(【Solidity学习笔记】delete操作符)