function _createB() public {
address newB = new B();
newB(newB); //Event logs the address of contract B
}
Когда я копирую и вставляю адрес, зарегистрированный из события newB, в «загрузить контракт по адресу» в Remix, я получаю другой контракт типа A.
Как мне создать отдельные контракты типа B?
При попытке получить контракт определенного типа по «адресу» этот контракт следует выбрать из выпадающего меню.
Что происходит в вашем случае, так это то, что вы получаете контракт типа «А», но он по-прежнему будет вести себя как контракт типа «Б».
Он просто предоставляет интерфейс для выбранного контракта, который, как ожидается, будет развернут по заданному адресу.
Теперь, если у контракта есть возможность реагировать на эти данные, т. е. выполнять эту функцию, вы получаете правильный вывод в соответствии с контрактом по этому адресу.
Примечание. Это следует использовать с осторожностью, потому что при неправильном использовании вы можете в конечном итоге взаимодействовать с другим контрактом.