Почему невозможно переназначить значение на уровне контракта в solidity?

#blockchain #ethereum #solidity #ether

#блокчейн #ethereum #solidity #эфир

Вопрос:

Это мой код, я хочу знать причину, по которой я не могу изменить значение в переменной a. Не могли бы вы сообщить мне причину или какую-либо информацию из solidity doc?

 // 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 '='
    }
 

Комментарии:

1. Вы уже пробовали / проверяли это: geeksforgeeks.org/solidity-variables

Ответ №1:

Вы пытаетесь изменить данные в декларативной части кода контракта. Поместите изменение в конструктор контракта или функцию.

 // 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;
    }

}
 

Ответ №2:

Вам нужна функция в контракте для изменения значений. Вы можете добиться этого, объявив функцию как view тип. Например.

 contract Demo {

    uint number;

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