instance : 특정 contract에서 다른 contract에 접근할때 사용됨
contract to contract을 이어줌
constructor : instance할때, 초기값 설정
// SPDX-License-Identifier: MIT
pragma solidity >= 0.7.0 < 0.9.0;
contract A
{
uint256 public a = 5;
function change(uint256 _value) public
{
a = _value;
}
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;
}
// input을 받아서, name과 age에 값 저장해서 B contarct에 수정가능
}
contract B
{
A instance = new A("alice",52);
// 괄호안에 초기값인 name = alice와 age = 52가 저장됨
// instace : A의 복사본
// 만약 A에서 a의값을 변경해도, get_A를 작동하지않으면, contract B에서 바뀐값이 작동하지않음.
function get() public view returns (string memory, uint256)
{
returns (instance.name(), instance.age());
}
// B의 func get()는 instance A의 name과 age를 return하는 func
function get_A() public view returns(uint256)
{
return instance.a();
}
// get_A : A contract의 a값사용하여 을 return하는 func
function change_A(uint256 _value) public
{
instance.change(_value);
}
// change_A : A contract의 change func을 사용하는 func
// instance. 을 사용하여, 다른 contarct의 변수나 함수에 접근가능
}