Constructor
: 배포될 때 실행됨
constructor(string memory _a, uint _b) {
a = _a;
b = _b;
}
: A와 B가 중요한 정보고, 특정 초기값이 설정되어야 함.
ex) 해당 스마트컨트랙트를 배포한 사람이 owner다. 이 경우 constructor 사용해 owner로 집어넣으면 됨.
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.8.2 <0.9.0;
contract CONSTRUCTOR {
uint a;
uint b;
constructor() {
a = 5;
b = 7;
}
function getAB() public view returns(uint, uint) {
return (a, b);
}
}
contract CONSTRUCTOR2 {
string a;
uint b;
constructor(string memory _a, uint _b) {
a = _a;
b = _b;
}
function getAB() public view returns(string memory, uint) {
return (a, b);
}
}
contract CONSTRUCTOR3 {
struct teacher {
string name;
uint number;
}
teacher T;
struct Student {
string name;
uint score;
string grade;
}
Student[] students;
constructor(string memory _name, uint _number) {
T = teacher(_name, _number);
}
function getTeacher() public view returns(teacher memory) {
return T;
}
}
contract CONSTRUCTOR4 {
bytes32 pw;
// Constructor 활용해 배포한 순간 비밀번호 설정
constructor(string memory _pw) {
pw = keccak256(abi.encodePacked(_pw));
} // 아무에게나 공개하고 싶진 않고, 인증할 수 있는 사람에게만 넘겨주고 싶을 때 keccak abi 사용하면 됨
function PW(string memory _pw) public view returns(bool) {
if(keccak256(abi.encodePacked(_pw)) == pw) {
return true;
} else {
return false;
}
}
}
contract CONSTRUCTOR5 {
bool higherThanTen;
constructor(uint _a) {
if(_a > 10) {
higherThanTen = true;
} else {
higherThanTen = false;
}
}
function getHigherThanTen() public view returns(bool) {
return higherThanTen;
}
}
// Constructor : 특정 변수의 초기값