솔리디티 깨부수기 - 기본
솔리디티 강좌 8강 instance 1 - 정의
D_One
2021. 9. 3. 23:38
안녕하세요
오늘은 인스턴스(instance)에 대해서 알아 보도록하겠습니다.
인스턴스는 주로 하나의 컨트랙에서 다른 컨트랙을 접근할 때 쓰인답니다.
간단히 예를 들어 A 와 B 컨트랙이 있다고 가정하였을때, B에서 A 의 함수나 변수들을 접근하여 사용하고 싶다면
A 인스턴스를 만들어 B 컨트랙 안에서 사용하면 됩니다.
// SPDX-License-Identifier:GPL-30
pragma solidity >= 0.7.0 < 0.9.0;
contract A{
uint256 public a = 5;
function change(uint256 _value) public {
a = _value;
}
}
contract B{
}
예를 들어 저희는 현재 B 컨트랙에서 A 컨트랙에 접근하여, 변수 a 와 change 함수를 사용해보려고 합니다
그러면, 일단 A를 B컨트랙에서 인스턴스화 해야 접근이 가능하겠죠?
contract B{
A instance = new A();
}
인스터스는 위오 같이 하시면 됩니다.
컨트랙이름 인스터스의 이름 = new 컨트랙이름();
이런식으로 간단하게 인스턴스를 정의가 가능해요.
인제 인스터스를 이용해 접근해야하는데 접근할때는 . 을 붙여서 이동한답니다.
예를들어서, instance.change(_value) 할 수 있습니다.
밑에를 보시면,
// SPDX-License-Identifier:GPL-30
pragma solidity >= 0.7.0 < 0.9.0;
contract A{
uint256 public a = 5;
function change(uint256 _value) public {
a = _value;
}
}
contract B{
A instance = new A();
function get_A() public view returns(uint256) {
return instance.a();
}
function change_A(uint256 _value) public {
instance.change(_value);
}
}