| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
- container
- 블록체인 #스마트컨트랙트
- 솔리디티
- smart contract
- 컨테이너
- 스마트컨트랙트
- JavaScript
- Ehter
- 합의알고리즘
- 소울바운드토큰
- 작업증명
- 디앱
- 이더리움
- smartcontract
- 폴리 브리지
- DAPP
- crypyocurrency
- solidity
- 암호화폐
- 스마트컨트렉트
- 비트코인
- 도커
- Ethereum
- 블록체인
- docker
- 지분증명
- 댑
- layer2
- Blockchain
- poly bridge
- Today
- Total
Let's make Everything
[String 타입] 본문
# 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은 앞으로 한 쌍으로 보면 좋을 것 같습니다.
참고
'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 |