생성자(contstructor)는 컨트랙트가 생성 또는 배포, 그리고 인스턴스화 될 때, 초깃값을 설정해주는 용도로 사용됨.
// SPDX-License-Identifier: MIT
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("coolmarvel", 28);
}
A 컨트랙트에 constructor가 있으며. 이를 통해 파라미터를 받아 name과 age에 할당하고 있음.
B 컨트랙트에서 A를 인스턴스화 하고 생성자 인자로 “coolmarvel”, 28을 초기값으로 넘김.
// SPDX-License-Identifier: MIT
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("coolmarvel", 28);
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에 타입을 여러 개 선언함.
change
를 보면, 컨트랙트 A의 change
를 통해 생성자에서 설정한 age, name을 변경함을 알 수 있음.