为什么不能在 solidity 中重新分配合约级别的值?

Why is it not possible to reassign the value in the contract level in solidity?

这是我的代码, 我想知道我无法更改变量 a 中的值的原因。 能否请您告诉我原因或来自 solidity 文档的任何信息?

// SPDX-License-Identifier: MIT
pragma solidity >=0.8.0 <0.9.0;

contract simple {
    uint public a = 3;
    a = 16; // error occurred : parser Error expected identifier but got '='
    }

您正在尝试更改合约代码声明部分的数据。将更改放入合约构造函数或函数中。

// SPDX-License-Identifier: MIT
pragma solidity >=0.8.0 <0.9.0;

contract simple
{
    uint public a = 3;

    constructor()
    {
      a = 16; 
    }

    function changeData() public
    {
      a = 16;
    }

}

您需要合同中的函数来修改值。您可以通过将函数声明为 view 类型来实现此目的。例如

contract Demo {

    uint number;

    function set(uint _number) public {
        number = _number + 1;
    }
}