상세 컨텐츠

본문 제목

솔리디티 강좌 9강 instance2 - constructor

솔리디티 깨부수기 - 기본

by D_One 2021. 9. 4. 15:13

본문

 

 

안녕하세요 오늘은 생성자 constructor를 설명하려 합니다.

생성자는, 스마트컨트랙이 생성 또는 배포, 그리고 인스턴스화 될때 초기값을 설정해주는 용도로 사용됩니다.

 

예시를 들자면, 

 

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

contract A{
    
    string public name;
    uint256 public age;
    
    constructor(string memory _name, uint256 _age){
        name = _name;
        age = _age;
    }
        
}

contract B{
    
  A instance = new A("Alice", 52);

}

현재 저희는 A 컨트랙에 constructor 가 있음을 알 수가 있습니다.

생성자를 통해서 파라메터를 받아, name 과 age에 값을 넣어주고 있습니다. 

 

그리고 B에 보니까, A를 인스터스화 하는데 괄호안에 "Alice" ,52 가 있는게 눈에 띄죠.

즉 이것은 A를 인스터스화 하기 위해서(생성하기 위해서), 필요한 초기 값인 것입니다.

 

좀더 나아가서,

 

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

contract A{
    
    string public name;
    uint256 public age;
    
    constructor(string memory _name, uint256 _age){
        name = _name;
        age = _age;
    }
        
    function change(string memory _name, uint256 _age) public  {
         name = _name;
         age = _age;
    }
}

contract B{
    
  A instance = new A("Alice", 52);
  
  function change(string memory _name, uint256 _age) public  {
        instance.change(_name,_age);
    }
  
  function get() public view returns(string memory, uint256) {
        return (instance.name(), instance.age());
    }

}

저희는 컨트랙 B 에 change 와 get 함수를 볼 수가 있어요.

 

먼저 get 함수에서는 여러개의 리턴을 하기에, returns 괄호 부분에 리턴하고자 하는 타입을 써주었네요.

저희는 name과 age를 리턴할거니 string과 unit256입니다. 

 

그리고 change를 보면, 컨트랙 A의 change를 통해서, 저희가 생성자에서 설정한 age , name 을 변경함을 알 수가 있어요.

 

영상을 꼭 참고 부탁드립니다.

영상에서 더 자세히 설명이 되어있어요.

관련글 더보기