使用和不使用`new`关键字创建新的可靠性合同有什么区别

时间:2017-03-21 12:10:47

标签: ethereum contract solidity

new关键字用于创建新智能合约的用途是什么。为什么不省略这个关键字?

2 个答案:

答案 0 :(得分:0)

您无法省略new关键字来创建新合约。

如果是:token = new Token;

创建新对比并将地址传递给token

如果是:token = existingToken;

existingToken必须是现有合约(已创建),token将传递existingToken的当前地址。

答案 1 :(得分:0)

有两种创建合同的方法

  1. 使用“新”关键字
  2. 使用合同地址

使用new关键字实例化合同的新实例并使用该新创建的合同实例

在后一种选择中,您将使用已经部署并实例化的合同的地址。您可以检查以下代码以供参考:

pragma solidity ^0.5.0;

contract Communication {

    string public user_message;

    function getMessage() public view returns (string memory) {
        return user_message;
    }

    function setMessage(string memory _message) public {
        user_message = _message;
    }
}

contract GreetingsUsingNew {

    function sayHelloUsingNew() public returns (string memory) {
        Communication newObj = new Communication();
        newObj.setMessage("Contract created using New!!!");

        return newObj.getMessage();
    }

}

contract GreetingsUsingAddress {

    function sayHelloUsingAddress(address _addr) public returns (string memory) {
        Communication addObj = Communication(_addr);
        addObj.setMessage("Contract created using an Address!!!");

        return addObj.getMessage();
    }
}