Variables are declared as either storage, memory or calldata to explicitly specify the location of the data.
데이터 위치 - 스토리지, 메모리 및 통화 데이터
변수는 데이터의 위치를 명시적으로 지정하기 위해 스토리지, 메모리 또는 호출 데이터로 선언됩니다.
storage - 변수는 상태 변수입니다(블록체인 위에 저장됨 ).
memory - 변수가 메모리에 있으며 함수가 호출되는 동안 존재합니다.
호출 데이터 - 함수 인수가 포함된 특수 데이터 로케이션
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
contract DataLocations {
uint[] public arr;
mapping(uint => address) map;
struct MyStruct {
uint foo;
}
mapping(uint => MyStruct) myStructs;
function f() public {
// call _f with state variables
_f(arr, map, myStructs[1]);
// get a struct from a mapping
// 매핑에서 struct 가져오기
MyStruct storage myStruct = myStructs[1];
// create a struct in memory
// 메모리에서 struct 만들기
MyStruct memory myMemStruct = MyStruct(0);
}
function _f(
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
}
}
Solidity - View and Pure Functions (0) | 2022.12.27 |
---|---|
Solidity - Fuction (0) | 2022.12.26 |
Solidity - Structs (0) | 2022.12.25 |
Solidity - Enum (0) | 2022.12.25 |
Solidity - Array (0) | 2022.12.25 |