工厂合约,顾名思义就是创建合约的工厂。
语法详解
可以根据new
关键字来创建合约
new Contract()
示例
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.2;
contract DemoContract {
string public name;
constructor(string memory _name) {
name = _name;
}
}
contract Test{
DemoContract[] public ads;
function create(string calldata _name) external{
DemoContract dc = new DemoContract(_name);
ads.push(dc);
}
}
1、部署合约后执行create
方法,填入参数Bob
2、读取ads数组中的第0个元素,此元素为创建的合约的合约地址
3、 添加该合约地址
4、读取出新合约的name值为Bob
总结
通过new
关键字创建新合约必须要有原始合约的全部代码。
可以通过此工厂合约无限制创建新的合约。