День 4 — Переменные и области действия

Содержание

  • День 1 — Лицензии и прагма
  • День 2 — Комментарии
  • День 3 — Инициализация базового контракта
  • День 4 — Переменные и области действия
  • День 5 — Операторы
  • День 6 — Типы
  • День 7 — Функции
  • День 8 — Циклы
  • День 9 — Принятие решений
  • День 10 — Массивы
  • День 11 — Операции с массивами
  • День 12 — Перечисления
  • День 13 — Структуры
  • День 14 — Сопоставления
  • День 15 — Единицы
  • День 16 — Утверждение требования
  • День 17 — Утверждение
  • День 18 — Утверждение возврата
  • День 19 — Модификаторы функций
  • День 20 Конструкторы
  • День 21 Одноуровневое наследование
  • День 22 Многоуровневое наследование
  • День 23 Иерархическое наследование
  • День 24 Множественное наследование
  • День 25 Возврат и функция получения
  • День 26 События и хэширование
  • День 27 Библиотеки
  • День 28 Абстрактный контракт и интерфейс
  • День 29 Сборка
  • День 30 Полиморфизм

🧡🧡🧡 HAPPY CODING 🧡🧡🧡

30 Days Of Solidity: Лицензии и Pragma

Автор

Посмотреть на GitHub

Это день 4 из серии 30 в Solidity.
Сегодня я узнал о переменных и диапазонах в Solidity.

Переменные

Solidity поддерживает три типа переменных.

  • State Variables — переменные, значения которых постоянно хранятся в контрактном хранилище.

  • Local Variables — переменные, значения которых присутствуют до выполнения функции.

  • Global Variables — специальные переменные, существующие в глобальном пространстве имен, используемые для получения информации о блокчейне.


При присвоении имен переменным в Solidity следует помнить о следующих правилах.

  • Вы не должны использовать ни одно из зарезервированных ключевых слов Solidity в качестве имени переменной. Например, имена переменных типа break или boolean недопустимы.
  • Имена переменных Solidity не должны начинаться с цифр (0-9). Они должны начинаться с буквы или символа подчеркивания. Например, 123test — недопустимое имя переменной, но _123test — допустимое.
  • Имена переменных Solidity чувствительны к регистру. Например, Name и name — это две разные переменные.

Переменная состояния

Переменные, значения которых постоянно хранятся в контрактном хранилище.

pragma solidity ^0.8.6;

contract SolidityTest {
   uint storedData;      // State variable
   constructor() public {
      storedData = 10;   // Using State variable
   }
}
Вход в полноэкранный режим Выход из полноэкранного режима

Локальная переменная

Переменные, значения которых доступны только в функции, где они определены. Параметры функции всегда локальны для этой функции.

pragma solidity ^0.8.6;
contract SolidityTest {
   uint storedData; // State variable
   constructor() public {
      StoredData = 10;
   }
   function getResult() public view returns(uint){
      uint a = 1; // local variable
      uint b = 2;
      uint Result = a + b;
      return Result; //access the local variable
   }
}
Войти в полноэкранный режим Выход из полноэкранного режима

Глобальные переменные

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

Имя Возвращает
blockhash(uint blockNumber) возвращает (bytes32) Хеш данного блока — работает только для 256 последних, исключая текущий, блоков
block.coinbase (оплачиваемый адрес) Адрес майнера текущего блока
block.difficulty (uint) Сложность текущего блока
block.gaslimit (uint) Текущий лимит газа в блоке

Подробнее о глобальных переменных здесь


Сферы действия переменных

Область действия локальных переменных ограничена функцией, в которой они определены, но переменные состояния могут иметь три типа областей действия.

eg-

pragma solidity ^0.8.6;
contract C {
   uint public data = 30;
   uint internal iData= 10;

   function x() public returns (uint) {
      data = 3; // internal access
      return data;
   }
}
contract Caller {
   C c = new C();
   function f() public view returns (uint) {
      return c.data(); //external access
   }
}
contract D is C {
   function y() public returns (uint) {
      iData = 3; // internal access
      return iData;
   }
   function getResult() public view returns(uint){
      uint a = 1; // local variable
      uint b = 2;
      uint result = a + b;
      return storedData; //access the state variable
   }
}
Вход в полноэкранный режим Выход из полноэкранного режима

Envoy-VC / 30-Days-of-Solidity

Пошаговое руководство 30 Days of Solidity для изучения разработки смарт-контрактов.

Оцените статью
Procodings.ru
Добавить комментарий