상세 컨텐츠

본문 제목

솔리디티 강좌 7강 function 4 - String

솔리디티 깨부수기 - 기본

by D_One 2021. 9. 2. 17:07

본문

 

function 에 string 파라미터를 넣고, 그 받은 파라미터를 다시 리턴 해볼게요. 

 

사실 string 을 function 내에서 쓰려면, memory 라는 키워드가 필요하답니다. 

 

solidity 는 storage, memory, calldata ,stack  이렇게 4개의 저장 영역으로  나뉘어 있어요.

 

storage : 대부분의 변수, 함수들이 저장되며, 영속적으로 저장이되어 가스 비용이 비싸답니다.

 

memory: 함수의 파라미터, 리턴값, 레퍼런스 타입이 주로 저장이 됩니다.

그러나, storage 처럼 영속적이지 않고, 함수내에서만 유효하기에 storage보다 가스 비용이 싸답니다.

 

Colldata : 주로 external function 의 파라메터에서 사용 됩니다.  예를 들어 함수를 실행할 때 파라메터의 값 자체를 calldata로 받을 수 있습니다. calldata로 받게 된다면, 값은 변경할 수 없고 읽기만 가능합니다. 

 

stack:  EVM (Ethereum Virtual Machine) 에서 stack data를 관리할때 쓰는 영역인데 1024Mb 1024개의 data를 제한적으로 저장해 사용할 수 있습니다. 예를 들어, 함수를 실행할 때 로컬 변수와 같은것들을 잠시 기억할 때 EVM이 사용을 합니다. 

 

저희는 string을 쓰기위해서는 memory 일식적으로 저장하는 키워드를 써야한답니다. 

string은 사실 레퍼런스 타입이라고 볼 수 있어요. 그렇기 때문에, memory키워드를 넣어줘야합니다.

// SPDX-License-Identifier  GPL-30
pragma solidity >= 0.7.0 < 0.9.0;

contract lec7 {
    
    function get_string(string memory _str) public pure returns( string memory){
        return _str;
    }
}

위에 간단한 예제가 있습니다.

string을 받아서 그대로 리턴하죠. 

 

string 다음에 memory 키워드가 있어요, memory는 늘 string 다음에 붙여준답니다. 

그리고, pure를 쓰는이유는, 파라미터 받은걸 바로 리턴하기해서, storage 에 저장된 변수들을 읽지 않았기때문 pure을 썻습니다.

 

 

비디오 참고 부탁드려요

관련글 더보기