상세 컨텐츠

본문 제목

Solidity - Data Locations

Programming Language/Solidity

by Yongari 2022. 12. 25. 10:58

본문

 

 

Data Locations - Storage, Memory and Calldata

Variables are declared as either storage, memory or calldata to explicitly specify the location of the data.

  • storage - variable is a state variable (store on blockchain)
  • memory - variable is in memory and it exists while a function is being called
  • calldata - special data location that contains function arguments

데이터 위치 - 스토리지, 메모리 및 통화 데이터
변수는 데이터의 위치를 명시적으로 지정하기 위해 스토리지, 메모리 또는 호출 데이터로 선언됩니다.

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
    }
}

Try on Remix

 

Remix - Ethereum IDE

 

remix.ethereum.org

출처 : https://solidity-by-example.org/data-locations/

'Programming Language > Solidity' 카테고리의 다른 글

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

관련글 더보기