متغیرها به صورت یکی اعلام می شوند ذخیره سازی
، حافظه
یا داده های تماس
به صراحت
ذخیره سازی
- متغیر یک متغیر حالت است (ذخیره در بلاک چین)حافظه
- متغیر در حافظه است و در هنگام فراخوانی یک تابع وجود داردداده های تماس
- مکان داده خاص که حاوی آرگومان های تابع است// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;
contract DataLocations {
uint256[] public arr;
mapping(uint256 => address) map;
struct MyStruct {
uint256 foo;
}
mapping(uint256 => MyStruct) myStructs;
function f() public {
// call _f with state variables
_f(arr, map, myStructs[1]);
// get a struct from a mapping
MyStruct storage myStruct = myStructs[1];
// create a struct in memory
MyStruct memory myMemStruct = MyStruct(0);
}
function _f(
uint256[] storage _arr,
mapping(uint256 => address) storage _map,
MyStruct storage _myStruct
) internal {
// do something with storage variables
}
// You can return memory variables
function g(uint256[] memory _arr) public returns (uint256[] memory) {
// do something with memory array
}
function h(uint256[] calldata _arr) external {
// do something with calldata array
}
}