Let's make Everything

[String 타입] 본문

Solidity

[String 타입]

rok92 2023. 4. 29. 01:01
728x90

# 1. String 타입

String 타입은 모두가 알고 있듯이 문자열을 의미합니다. String 타입을 function 내에서 사용하려면 memory 라는 키워드가 필요합니다.

memory는 솔리디티내에 있는 저장영역중에 하나 인데요, 솔리디티 저장영역은 4개가 존재합니다.

- memory : 함수의 파라미터, 리턴값, 레퍼런스 타입이 주로 저장됩니다. 하지만 storage 처럼 영속적이지 않고 함수내에서만 유효하기에 storage보다 가스비용이 쌉니다.

- storage : 대부분의 변수, 함수들이 저장되며, 영속적으로 저장이 되기 때문에 가스비용이 비쌉니다.

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

- stack : EVM에서 stack data를 관리할 때 사용하는 영역으로 1024개의 data를 제한적으로 저장하여 사용할 수 있습니다. 예를 들어 함수를 실행할 때 로컬영역의 변수들을 잠시 기억할 때 EVM이 사용합니다.

 

String은 레퍼런스 타입으로 볼 수 있습니다. 그래서 memory 키워드를 넣어주어야 합니다.

간단한 예제를 통해서 보여드리겠습니다.

// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.0;

contract String{
	function get_string(string memory _str) public view return(string memory){
    	return _str;
    }
}

위의 코드에서 볼 수 있듯이 string을 그대로 받아서 리턴합니다.

string 매개변수 뒤에 memory를 사용한 것 또한 볼 수 있습니다. 이처럼 memory와 string은  앞으로 한 쌍으로 보면 좋을 것 같습니다.

 

참고

https://dayone.tistory.com/m/8

'Solidity' 카테고리의 다른 글

[Constructor]  (0) 2023.05.29
[Instance 정의]  (0) 2023.05.01
[View와 Pure]  (0) 2023.04.27
[Solidity 접근제어자]  (0) 2023.04.15
[Function정의, 사용법?]  (0) 2023.04.15