Skip to content

多重合约的构造函数

多重合约是在 Solidity 中使用的一种重要的设计模式,它允许将多个合约封装到一个主合约中,以便在多个合约之间共享数据和逻辑。在多重合约中,每个子合约都有自己的构造函数,并且这些构造函数在部署合约时会按照指定的顺序依次执行。

示例

以下是一个简单的多重合约示例,包括一个主合约和两个子合约。主合约 Show 中包含两个字符串变量 message1message2,分别属于两个子合约 AB。在部署主合约时,它会先创建合约 A,然后创建合约 B,最后将 message1message2 分别设置为合约 A 和合约 B 中的字符串变量。

solidity
pragma solidity ^0.8.0;

contract A {
    string public messageA;
    
    constructor(string memory _messageA) {
        messageA = _messageA;
    }
}

contract B {
    string public messageB;
    
    constructor(string memory _messageB) {
        messageB = _messageB;
    }
}

contract Show {
    string public message1;
    string public message2;
    
    constructor(string memory _message1, string memory _message2) {
        A a = new A(_message1);
        B b = new B(_message2);
        
        message1 = a.messageA();
        message2 = b.messageB();
    }
}

在上面的代码中,两个子合约 AB 都有一个包含一个字符串参数的构造函数,它们用于初始化各自的字符串变量。

主合约 Show 的构造函数接受两个字符串参数,分别用于创建合约 A 和合约 B。在构造函数中,我们使用 new 关键字来创建合约 AB 的实例,然后将它们的 messageAmessageB 字符串变量赋值给主合约 Showmessage1message2 字符串变量。