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
}
}
总结
日拱一卒。