在Solidity中,构造函数可以与合约同名吗?

Cre*_*man 4 constructor function

根据本文构造函数或初始化函数与合约具有相同的名称。但是,当我有一个同名的函数时,重新混合编译器会返回一个错误,提示“不推荐将构造函数定义为与合约同名的函数。请改用“constructor(...) { ... }”。 ”

所以,我的问题是,在这种情况下使用相同的名称是否应该避免?(也许这是一种过时的做法?)

小智 7

由于Solidity v0.4.23,现在使用关键字指定构造函数 constructor

    constructor () {}
Run Code Online (Sandbox Code Playgroud)

只是为了与旧方法进行比较,假设我们有一个名为 的智能合约Employee,在过去,您可以像这样指定合约及其构造函数:

    contract Employee {
      // constructor
      function Employee() public {
        // ...
      }
    }
Run Code Online (Sandbox Code Playgroud)

但现在指定员工智能合约可接受的方式是:

    contract Employee {
      // constructor
      constructor() public {
        // ...
      }
    }
Run Code Online (Sandbox Code Playgroud)

现在不推荐使用合约名称作为其构造函数。