TGViewer
Из Solidity в AI и дальше Из Solidity в AI и дальше @solidityset · 2.49K subscribers
Post #1336 943
🤡 Компилятор тоже умеет шутить

В день смеха и розыгрышей хотел поделиться с вами интересным моментом работы с immutables и константами в смарт контрактах, а точнее с порядком их объявлений.

В некоторых случаях это может стоить вам повторного деплоя контрактов, в худшем - сломанными расчетами.

Посмотрите на код ниже:


contract Immutables {

uint256 public constA = constB + 100;
uint256 internal constant constB = 50;

// constA будет равно 150

uint256 public immA = immB + 100;
uint internal immutable immB = 25;

//immA будет равно 100, а не 125

}


В первом случае в переменной будет установлено значение 150, во втором - 100. Это происходит потому, что immutable переменные не заменяются на этапе компиляции, а записываются в хранилище контракта при его развертывании (в конструкторе).

Порядок инициализации полей в Solidity сверху вниз:

1. Сначала вычисляется immA = immB + 100, но на этом этапе immB ещё не проинициализирован (по умолчанию 0).

2. Затем только присваивается immB = 25.

Поэтому immA получает значение 0 + 100 = 100.

Вот так компилятор умеет "шутить", если не знать, как он работает!

#immutable #constant
  • 👍 12
  • ❤ 4
More from @solidityset
  1. Sep 22, 2026Какой язык программирования учить сейчас? На днях в Твиттере увидел небольшой пост о разви…
  2. Sep 18, 2026Интересная модель Jev Буквально пару дней назад в Твиттере многие начали обсуждение новой…
  3. Sep 14, 2026Графы повсюду Если вы также следите за новостями в мире ИИ, то наверняка уже все чаще встр…
  4. Sep 10, 2026GTA6, Cyberleek, блокчейн и безопасность Увидел несколько постов (тут и тут) про Cyberleek…
  5. Sep 9, 2026Работа с чистой энергией Дисклеймер Сегодня ава и название канала, наконец, поменялись. Я…
  6. Sep 9, 2026Channel name was changed to «Из Solidity в AI и дальше»
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →