首页 > 其他分享 >【从0学习Solidity】 8. 变量初始值

【从0学习Solidity】 8. 变量初始值

时间:2023-09-27 15:03:21浏览次数:41  
标签:Solidity 变量 初始值 uint 默认值 public delete


【从0学习Solidity】8. 变量初始值

【从0学习Solidity】 8. 变量初始值_dubbo

  • 博主简介:不写代码没饭吃,一名全栈领域的创作者,专注于研究互联网产品的解决方案和技术。熟悉云原生、微服务架构,分享一些项目实战经验以及前沿技术的见解。
  • 关注我们的主页,探索全栈开发,期待与您一起在移动开发的世界中,不断进步和创造!
  • 本文收录于 不写代码没饭吃 的学习汇报系列,大家有兴趣的可以看一看。
  • 欢迎访问我们的微信公众号:不写代码没饭吃,获取更多精彩内容、实用技巧、行业资讯等。您关注的是我们前进的动力!

变量初始值

solidity中,声明但没赋值的变量都有它的初始值或默认值。这一讲,我们将介绍常用变量的初始值。

值类型初始值

  • boolean: false
  • string: ""
  • int: 0
  • uint: 0
  • enum: 枚举中的第一个元素
  • 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: 所有元素都为其默认值的mapping
  • 结构体struct: 所有成员设为其默认值的结构体
  • 数组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
    }

在remix上验证

  • 部署合约查看值类型、引用类型的初始值
  • 【从0学习Solidity】 8. 变量初始值_原力计划_02

  • 值类型、引用类型delete操作后的默认值
  • 【从0学习Solidity】 8. 变量初始值_区块链_03

总结

这一讲,我们介绍了solidity中变量的初始值。变量被声明但没有赋值的时候,它的值默认为初始值。不同类型的变量初始值不同,delete操作符可以删除一个变量的值并代替为初始值。

【从0学习Solidity】 8. 变量初始值_原力计划_04

如果这份博客对大家有帮助,希望各位给作者一个免费的点赞

标签:Solidity,变量,初始值,uint,默认值,public,delete
From: https://blog.51cto.com/u_15344421/7625406

相关文章

  • 【从0学习Solidity】7. 映射类型 mapping
    【从0学习Solidity】7.映射类型mapping博主简介:不写代码没饭吃,一名全栈领域的创作者,专注于研究互联网产品的解决方案和技术。熟悉云原生、微服务架构,分享一些项目实战经验以及前沿技术的见解。关注我们的主页,探索全栈开发,期待与您一起在移动开发的世界中,不断进步和创造!本文收录于......
  • 【从0学习Solidity】 4. 函数输出
    【从0学习Solidity】4.函数输出博主简介:不写代码没饭吃,一名全栈领域的创作者,专注于研究互联网产品的解决方案和技术。熟悉云原生、微服务架构,分享一些项目实战经验以及前沿技术的见解。关注我们的主页,探索全栈开发,期待与您一起在移动开发的世界中,不断进步和创造!本文收录于不写代......
  • 【从0学习Solidity】 6. 引用类型, array, struct
    【从0学习Solidity】6.引用类型,array,struct博主简介:不写代码没饭吃,一名全栈领域的创作者,专注于研究互联网产品的解决方案和技术。熟悉云原生、微服务架构,分享一些项目实战经验以及前沿技术的见解。关注我们的主页,探索全栈开发,期待与您一起在移动开发的世界中,不断进步和创造!本......
  • 【从0学习Solidity】 5. 变量数据存储和作用域 storage/memory/calldata
    【从0学习Solidity】5.变量数据存储和作用域storage/memory/calldata博主简介:不写代码没饭吃,一名全栈领域的创作者,专注于研究互联网产品的解决方案和技术。熟悉云原生、微服务架构,分享一些项目实战经验以及前沿技术的见解。关注我们的主页,探索全栈开发,期待与您一起在移动开发的......
  • 【从0学习Solidity】 3. 函数详解
    【从0学习Solidity】3.函数详解博主简介:不写代码没饭吃,一名全栈领域的创作者,专注于研究互联网产品的解决方案和技术。熟悉云原生、微服务架构,分享一些项目实战经验以及前沿技术的见解。关注我们的主页,探索全栈开发,期待与您一起在移动开发的世界中,不断进步和创造!本文收录于不写代......
  • JVS低代码如何通过逻辑触发变量节点进行表单数据回显?
    使用说明通常业务中会涉及到表单上部分字段填写后通过触发逻辑处理已填写的数据进行回显到表单上,这时我们可以采用业务逻辑来配置对象变量节点进行表单数据回显。对象变量:将自定义字段重新组装新的数据结构,数据结构类型为对象。设计表单入口在表单中配置按钮组件或者是设置组件的网......
  • 一文读懂Python中的全局变量局部变量和作用域
    局部变量和全局变量是面试热点通常小白在写代码时,只知道引用变量来应对一些基础的编码问题,当面试官问及局部变量和全局变量的具体细节时,就会一脸懵逼,傻傻分不清楚!其实想要彻底了解局部变量和全局变量的关系,本质是大家需要明白何为作用域!这篇文章会带大家彻底搞懂这三者之的唇齿相依......
  • 智能合约-solidity
    智能合约-solidity语言学习Solidity是一种静态类型语言,这意味着每个变量(状态变量和局部变量)都需要在编译时指定变量的类型。Solidity提供了几种基本类型,并且基本类型可以用来组合出复杂类型。除此之外,类型之间可以在包含运算符号的表达式中进行交互。关于各种运算符号,可以参......
  • ls报错修改环境变量
    问题:系统找不到环境变量在终端输入:ls后显示:root@wei:/etc#lsCommand'ls'isavailablein'/bin/ls'Thecommandcouldnotbelocatedbecause'/bin'isnotincludedinthePATHenvironmentvariable.ls:commandnotfound解决办法:直接在终端输入:expor......
  • 关于vite/cli构建项目的区别&环境变量配置&关于接口地址
    ####区别**Vite:**1.**开发服务器启动速度:**Vite通过利用ES模块的特性,实现了快速的冷启动和热模块替换。这意味着在开发环境中,启动开发服务器和应用程序的重新加载速度更快。1.**即时的按需编译:**Vite在开发过程中只会编译和打包当前正在编辑的文件,而不会重新构建整个......