Предупреждение о ремиксе — постоянно, но потенциально не должно быть.

Я получаю предупреждение о коде, показанном ниже. Не могли бы вы помочь мне узнать, как устранить это предупреждение?

предупреждающее сообщение - «Постоянно, но потенциально не должно быть»

введите описание изображения здесь

Ответы (2)

Тот же вопрос обсуждался здесь, но так и не пришел к какому-либо выводу.

Я думаю, что это происходит из-за newключевого слова при создании переменной string abcde.

Я попробовал два примера контрактов для подтверждения.

pragma solidity ^0.4.24;

contract Foo {
    uint256 n = 10;
    function initArray() public view  {
        uint[10*10] memory result;
        for (uint i = 0; i < n; i++){
           for(uint j = 0; j < n; j++){
                result[(i*9)+j]=1; 
            }
        }

    }
}

Для приведенного выше смарт-контракта remix не выдает предупреждение Is constant but potentially should not be.

pragma solidity ^0.4.24;

contract Foo {
    uint256 n = 10;
    function initArray() public view  {
        uint[] memory result = new uint[](n*n);
        for (uint i = 0; i < n; i++){
           for(uint j = 0; j < n; j++){
                result[(i*9)+j]=1; 
            }
        }

    }
}

Однако для вышеуказанного контракта ремикс выдает предупреждение:Is constant but potentially should not be.

Функция записывает в переменную состояния babcde[], определенную в другом месте. Поскольку он записывает в состояние, pureмодификатор только для чтения, вероятно, ошибочен.

Надеюсь, поможет.