솔리디티 깨부수기 - 기본
솔리디티 강좌 20강 struct (구조체)
D_One
2021. 9. 20. 13:08
유튜브를 통해, 쉽고 간편하게 이해 해보아요!
https://youtu.be/Q1EIEGfb9lg
- YouTube
www.youtube.com
구독/좋아요 해주셔서 감사합니다 :) !!
안녕하세요,
오늘은 struct 구조체에 대해서 배워 볼게요.
구조체는 말그대로 저희만의 구조 즉 타입을 만드는 거예요.
구조체는
struct 구조체명 {
타입 변수명,
타입 변수명,
.....
}
이런식으로 정의가 된답니다.
// SPDX-License-Identifier:GPL-30
pragma solidity >= 0.7.0 < 0.9.0;
contract lec20{
struct Character{
uint256 age;
string name;
string job;
}
}
예시로 저희는 Chracter라는 아주 간단한 구조체를 만들었습니다.
character 안에는 age, name, job 이라는 변수들이 들어 있습니다.
자 그럼 이걸한번 생성해보도록할게요.
// SPDX-License-Identifier:GPL-30
pragma solidity >= 0.7.0 < 0.9.0;
contract lec20{
struct Character{
uint256 age;
string name;
string job;
}
function createCharacter(uint256 _age,string memory _name,string memory _job) public pure{
Character(_age,_name,_job);
}
}
위와 같이 createCharacter 함수로 만들 수가 있겠네요.
그러나 이렇게 만든다고해도, 따로 반환이 안되기에,
저희는 이 구조체를 mapping 과 array에 각각 넣어 보도록 해볼게요.
먼저 넣기 위해서 mapping 과 array에 이 구조체 타입을 정의해야겠죠.
// SPDX-License-Identifier:GPL-30
pragma solidity >= 0.7.0 < 0.9.0;
contract lec20{
struct Character{
uint256 age;
string name;
string job;
}
mapping(uint256=>Character) public CharacterMapping;
Character[] public CharacterArray;
}
위와 같은식으로 Character 타입을 갖는 mapping과 array를 만들었네요
자 그러면 넣고, 반환 하도록 해볼게요
// SPDX-License-Identifier:GPL-30
pragma solidity >= 0.7.0 < 0.9.0;
contract lec20{
struct Character{
uint256 age;
string name;
string job;
}
mapping(uint256=>Character) public CharacterMapping;
Character[] public CharacterArray;
function createCharacter(uint256 _age,string memory _name,string memory _job) pure public returns(Character memory) {
return Character(_age,_name,_job);
}
function createChracterMapping(uint256 _key, uint256 _age,string memory _name,string memory _job ) public {
CharacterMapping[_key] = Character(_age,_name,_job);
}
function getChracterMapping(uint256 _key) public view returns(Character memory){
return CharacterMapping[_key];
}
function createChracterArray(uint256 _age,string memory _name,string memory _job ) public {
CharacterArray.push(Character(_age,_name,_job));
}
function getChracterArray(uint256 _index) public view returns(Character memory){
return CharacterMapping[_index];
}
}