Ошибка компиляции — предупреждение: неиспользуемая локальная переменная

Я получаю предупреждения об ошибках для нескольких переменных, таких как депозит, общая оплата и продолжительность, которые необходимы для приема платежей от пользователей.

Ошибка, которую я получаю:

Предупреждение: неиспользуемая локальная переменная.

Вопросы:

  • Что это значит?
  • И почему с баланса пользователя не списываются платежи или списания?

Скриншоты:введите описание изображения здесь введите описание изображения здесь

Ответы (2)

Уоринг: Эта декларация омрачает...

Это происходит потому, что вы объявили переменную длительности uint в начале вашего контракта (ссылка: Untitled.sol:27), а затем использовали те же имена переменных в качестве аргументов в своей функции. Если ваша единственная цель — использовать их внутри этой функции, вам не нужно объявлять их вне функции. В противном случае просто добавьте подчеркивание внутри переменных функции, т.е. номер строки файла Untitled.sol 152, измените имя переменной как _duration

Предупреждение: неиспользуемая локальная переменная.

Я надеюсь, вы знаете, что EVM требует газа для выполнения вашего (оперативного) кода. Если вы напишете одну дополнительную строку, EVM будет потреблять некоторое количество газа для выполнения этих операторов. И вам нужно быть очень осторожным при создании переменных, потому что это будет стоить газа в зависимости от типа данных. Компилятор Solidity выдает предупреждение об удалении неиспользуемых переменных. Потому что при выполнении метода контракта это будет стоить. В ближайшей черте стоимость газа будет больше. Поэтому, пожалуйста, удалите неиспользуемые переменные, чтобы уменьшить окончательные коды операций, т.е. потребление газа для вашего метода будет низким.

Что это значит:

Эта декларация омрачает...

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

Неиспользуемая локальная переменная...

Если вы объявляете переменную, которую вы не используете и не храните в хранилище контракта, вы получаете предупреждение от remix. Если вам действительно нужны эти локальные переменные, просто используйте их внутри функции или, если вы хотите использовать их позже, просто измените состояние, поместив эти переменные в какой-то массив или сопоставление.