【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
    }

}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,256评论 19 139
  • C++运算符重载-下篇 本章内容:1. 运算符重载的概述2. 重载算术运算符3. 重载按位运算符和二元逻辑运算符4...
    Haley_2013阅读 1,492评论 0 49
  • 根据《这样读书就够了》一书中原创的成人学习方法论,用以下三个步骤帮助我们进行知识的内化:【选摘】、【思考】、【行动...
    想做点输出的云宝阅读 399评论 0 0
  • 一些起伏难安的夏天出现在某一段章节被翻开的那一页里有一千个夏天一千束午后的光线一千焦行人的瞳孔却没有一道 可以鼓起...
    劳心者阅读 194评论 0 2
  • 有人说,大学是一座象牙塔 保护我们,远离了暴风雨雪 而我要说,大学是一处房产 你的志愿就是你的房产所在地 高考的分...
    挂在枝头的鱼阅读 263评论 10 7