2023. 6. 1. 00:34ㆍBlockChain/Solidity 깨부수기 ( 유투브 강의 )
목차 |
1. Struct( 구조체 ) |
2. Struct 예제코드 |
1. Struct ( 구조체 )
struct 타입은 구조체를 새로 만드는 것이다.
typescript의 인터페이스와 같이 미리 객체 형태의 구조를 설정하여 타입을 명시해주는 것이다.
struct를 사용하는 문법은 다음의 예시를 보도록 하자.
struct Person {
string name;
uint256 age;
uint256 height;
}
컨트랙트 전역에 선언하여 함수에서 Person이라는 타입으로 사용이 가능하다.
https://char1ey.tistory.com/134
Solidity 문법 - (2) 솔리디티 타입
목차 1. 솔리디티 타입 2. 타입 예제 코드 1. 솔리디티 타입 Solidity에서 쓰이는 타입들에 대해서 알아보자. 솔리디티에서는 크게 세 가지의 타입이 있다. data type boolean - 참, 거짓을 나타낸다. bytes -
char1ey.tistory.com
솔리디티의 타입에서 설명했듯이 struct 타입은 string과 Array와 같이 reference 타입이므로
함수에서 사용할 때에는 memory를 적어주어야 한다.
(storage가 아닌 memory에 저장 되므로)
예제 코드를 보면서 사용방법을 익혀보자.
2. struct 예제코드
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract EStruct {
struct Person {
string name;
uint256 age;
uint256 height;
}
mapping(uint256 => Person) public PersonMapping;
Person[] public PersonArray;
function createPerson(string memory _name, uint256 _age, uint256 _height) public pure returns(Person memory){
return Person(_name, _age, _height);
}
function createPersonMapping(uint256 _key, string memory _name, uint256 _age, uint256 _height) public {
PersonMapping[_key] = Person(_name, _age, _height);
}
function getPersonMapping(uint256 _key) public view returns(Person memory) {
return PersonMapping[_key];
}
function createPersonArray(string memory _name, uint256 _age, uint256 _height) public {
PersonArray.push(Person(_name, _age, _height));
}
function getPersonArray(uint256 _key) public view returns(Person memory) {
return PersonArray[_key];
}
}
struct는 데이터의 타입을 선언하는 것과 비슷하다.
리턴에 struct를 하나의 타입으로 선언하여 적어주면 struct안의 내용을 적지 않아도된다.
struct는 객체처럼 하나의 변수에 여러가지의 변수들을 넣어주기 위해서 사용한다.
※ 솔리디티에서의 return은 함수를 호출한 곳에 전달이 될 뿐 솔리디티 어딘가에 저장이 되지 않는다.
따라서 위의 예제코드 대부분에서는 전역에 배열이나 mapping을 선언하여 struct 들을 담는 저장소 역할을 한다.
'BlockChain > Solidity 깨부수기 ( 유투브 강의 )' 카테고리의 다른 글
Solidity 문법 - (17) 반복문 (0) | 2023.06.01 |
---|---|
Solidity 문법 - (16) 조건문 if (0) | 2023.06.01 |
Solidity 문법 - (14) Array (0) | 2023.05.30 |
Solidity 문법 - (13) Mapping (0) | 2023.05.30 |
Solidity 문법 - (12) 상속의 순서와 super (0) | 2023.05.30 |