11-Solidity8.0存储位置

Solidity8.0

11-Solidity8.0存储位置


在这里插入图片描述


前言

数据位置 - 存储、内存和调用数据
变量被声明为storage或memory以calldata显式指定数据的位置。

storage- 变量是状态变量(存储在区块链上)
memory- 变量在内存中,并且在调用函数时存在
calldata- 包含函数参数的特殊数据位置


一、Solidity8.0存储位置

1.存储位置

代码如下(示例):

// SPDX-License-Identifier: MIT
pragma solidity ^0.8;

contract DataLocations {
    uint[] public arr;
    mapping(uint => address) map;
    struct MyStruct {
        uint foo;
    }
    mapping(uint => MyStruct) myStructs;

    function func() public {
        _func(arr, map, myStructs[1]);

        MyStruct storage myStruct = myStructs[1];
        MyStruct memory myMemStruct = MyStruct(0);
    }

    function _func(
        uint[] storage _arr,
        mapping(uint => address) storage _map,
        MyStruct storage _myStruct
    ) internal {
        // do something with storage variables
    }

    // You can return memory variables
    function g(uint[] memory _arr) public returns (uint[] memory) {
        // do something with memory array
    }

    function h(uint[] calldata _arr) external {
        // do something with calldata array
    }
}


总结

日拱一卒。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值