Одной из фундаментальных концепций, которые вы должны усвоить как веб-разработчик, является использование переменных ключевых слов. Переменные являются важными элементами любого языка программирования, позволяющими хранить, обрабатывать и извлекать данные. В этом руководстве мы рассмотрим различные ключевые слова переменных в Solidity.
- Объявление переменных в Solidity: В Solidity переменные объявляются с использованием ключевого слова
type
, за которым следует имя переменной. Например:
uint256 public myVariable;
Это объявляет переменную с именем myVariable
типа uint256
, которая представляет собой целое число без знака, способное хранить 256 бит данных. Ключевое слово public
— это модификатор, который мы обсудим позже.
2. Типы значений. Solidity предоставляет несколько типов значений, позволяющих работать с различными типами данных. Давайте рассмотрим некоторые из часто используемых типов значений:
2.1. Булева переменная: логическая переменная может хранить либо true
, либо false
. Например:
bool public isActivated = true;
2.2. Целочисленные типы: Solidity предоставляет различные целочисленные типы, такие как uint8
, int256
и т. д., с разным размером бит и знаком. Например:
uint8 public myUint8 = 255; int256 public myInt256 = -42;
2.3. Целочисленные типы без знака. Целочисленные типы без знака, обозначаемые ключевым словом uint
, могут хранить только неотрицательные значения. Например:
uint public myUint = 123;
2.4. Адрес: тип address
используется для представления адресов. Он может хранить как внешние адреса, так и адреса контрактов. Например:
address public myAddress = 0x1234567890123456789012345678901234567890;
2.5. Числа с фиксированной точкой: Solidity поддерживает числа с фиксированной точкой с различной точностью, используя ключевые слова fixed
и ufixed
. Например:
fixed public myFixed = 1.234; ufixed public myUfixed = 0.567;
Числа с фиксированной точкой еще не полностью поддерживаются Solidity. Они могут быть объявлены, но не могут быть назначены или из.
2.6. Enum: перечисления позволяют определять пользовательские типы с конечным набором значений. Каждому значению присваивается индекс, начинающийся с 0. Например:
enum State { PENDING, APPROVED, REJECTED } State public currentState = State.PENDING;
2.7. Байты и статические массивы. Тип bytes
позволяет работать с байтовыми массивами произвольной длины, тогда как статические массивы имеют фиксированную длину. Например:
bytes public myBytes = "Hello, World!"; bytes32[5] public myStaticArray;
2.8. Динамические массивы. Динамические массивы могут иметь переменную длину, которую можно изменить во время выполнения. Например:
uint[] public myDynamicArray;
3. Ссылочные типы: Solidity также предоставляет ссылочные типы, которые позволяют работать со сложными структурами данных. Давайте рассмотрим некоторые из них:
3.1. Структуры: Структуры позволяют вам определять пользовательские структуры данных с несколькими полями. Например:
struct Person { string name; uint age; } Person public myPerson;
3.2. Сопоставления. Сопоставления — это хранилища ключей и значений, которые могут связывать значение с уникальным ключом. Например:
mapping(address => uint) public balances;
3.3. Массивы. Массивы могут хранить несколько значений одного типа. Они могут быть статическими или динамическими, как и типы значений. Например:
Person[] public people;
3.4. Строки. Тип string
позволяет работать со строковыми данными переменной длины. Например:
string public greeting = "Hello, World!";
4. Модификаторы переменных. Модификаторы в Solidity предоставляют дополнительные функциональные возможности для переменных. Давайте рассмотрим некоторые часто используемые модификаторы:
4.1. Общедоступная: общедоступная переменная генерирует автоматическую функцию получения, позволяющую другим контрактам или пользователям получать доступ к ее значению. Например:
uint public myVariable;
4.2. Частная: доступ к частной переменной возможен только из текущего контракта. Например:
uint private myVariable;
4.3. Внутренний: доступ к внутренней переменной можно получить из текущего контракта и его производных контрактов. Например:
uint internal myVariable;
4.4. Внешний: доступ к внешней переменной возможен только извне, обычно через вызовы функций. Например:
uint external myVariable;
5. Постоянные и неизменяемые переменные: Solidity позволяет вам определять постоянные и неизменяемые переменные, которые инициализируются во время компиляции и не могут быть изменены впоследствии. Например:
uint256 constant public MY_CONSTANT = 42; uint256 immutable public myImmutable = block.timestamp;
6. Ключевые слова «Память» и «Хранилище». В Solidity вам часто нужно указать, должна ли переменная храниться в памяти или в хранилище. Ключевое слово memory
используется для временных данных, которые исчезают после выполнения функции, а ключевое слово storage
относится к постоянному хранилищу контрактов. Например:
function myFunction() public { uint[] memory myArray; // Declares an array in memory myArray.push(42); }
7. Глобальные переменные: Solidity предоставляет несколько глобальных переменных, доступ к которым можно получить на протяжении всего контракта. Давайте рассмотрим некоторые из них:
7.1. msg: глобальная переменная msg
предоставляет информацию о текущей транзакции. Например:
address public sender = msg.sender; uint public value = msg.value;
7.2. блок: глобальная переменная block
предоставляет информацию о текущем блоке. Например:
uint public blockNumber = block.number; uint public blockTimestamp = block.timestamp;
7.3. tx: глобальная переменная tx
предоставляет информацию о текущей транзакции. Например:
bytes32 public txHash = tx.hash; address public origin = tx.origin;
7.4. сейчас: глобальная переменная now
возвращает текущую метку времени. Например:
uint public currentTime = now;
Заключительные слова:
В этом сообщении блога мы рассмотрели основы переменных ключевых слов в Solidity для разработчиков Web3. Углубляясь в типы значений, ссылочные типы, модификаторы переменных, постоянные и неизменяемые переменные, ключевые слова памяти и хранилища, а также глобальные переменные, мы стремились обеспечить полное понимание того, как эффективно использовать переменные в ваших смарт-контрактах. Не стесняйтесь экспериментировать и исследовать более продвинутые функции, продолжая свое путешествие.
Если вы нашли эту статью информативной и полезной, подпишитесь на меня, чтобы получать больше материалов, связанных с блокчейном и криптовалютой. Вы также можете подписаться на мою рассылку, чтобы получать новости о моих последних статьях и проектах.