Solidity 中这个警告的含义是什么?

Ali*_*san 3 blockchain solidity remix

当我编写代码时,我在代码的第 10 行收到警告。谁能告诉我这个警告是什么意思?

我的代码

// SPDX-License-Identifier: UNLICENSED

pragma solidity >=0.5.0 < 0.9.0;

contract PracticeTest // It's a class
{
    string name ;
    uint256 age;

    constructor() public
    {
        name = "Ali";
        age = 21 ;
    }
}
Run Code Online (Sandbox Code Playgroud)

这是警告

Warning: Visibility for constructor is ignored. If you want the contract to be non-deployable, making it "abstract" is sufficient.
  --> contracts/PracticeTest.sol:10:5:
   |
10 |     constructor() public
   |     ^ (Relevant source part starts here and spans across multiple lines).
Run Code Online (Sandbox Code Playgroud)

Pet*_*jda 9

构造函数不再需要可见性 ( public/ ):为了防止创建合约,可以将其标记为。这使得构造函数的可见性概念变得过时。internalabstract

资料来源:https ://docs.soliditylang.org/en/v0.8.13/070-writing-changes.html#functions-and-events


因此,如果您使用 Solidity 0.7 或更高版本编译合约,则构造函数可见性(在您的情况下public)将被忽略,您可以安全地将其删除。

constructor()
{
    name = "Ali";
    age = 21 ;
}
Run Code Online (Sandbox Code Playgroud)