Если - demonoved/A-trial-run-in-solidity GitHub Wiki
// SPDX-License-Identifier: MIT
// compiler version must be greater than or equal to 0.8.20 and less than 0.9.0
pragma solidity ^0.8.23;
contract IfElse {
function foo(uint x) public pure returns (uint){
if (x < 10){
return 0;
} else if (x < 20){
return 1;
} else {
return 2;
}
}
function ternary(uint _x) public pure returns (uint){
// if (_x < 10){
// return 1;
// }
//return 2;
//сокращеное написание if/else
// ? троичный оператор
return _x < 10 ? 1 : 2;
}
}
Этот код написан на языке программирования Solidity, который используется для создания смарт-контрактов в блокчейн-сети Ethereum. Смарт-контракты — это программы, которые выполняются точно так, как написано, без посредников, когда выполняются определенные условия. Они работают на технологии блокчейн и могут использоваться для автоматизации обмена монетами, токенами, активами и многим другим.
Посмотрим на части кода:
- Лицензия и версия Solidity:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.23;
// SPDX-License-Identifier: MIT
— это комментарий, указывающий, что код лицензирован под открытой лицензией MIT.pragma solidity ^0.8.23;
— эта строка говорит о том, что для компиляции данного контракта нужен компилятор Solidity версии 0.8.23 или выше, но ниже 0.9.0.
- Контракт и функции:
contract IfElse {
contract IfElse
— объявление нового смарт-контракта с именемIfElse
.
function foo(uint x) public pure returns (uint){
-
function foo(uint x) public pure returns (uint)
— функцияfoo
, принимающая один аргументx
типаuint
(беззнаковое целое), доступна для всех (public), не взаимодействует с данными контракта (pure) и возвращает значение типаuint
.Внутри этой функции используется конструкция
if-else
для ветвления:- Если
x
меньше 10 (if (x < 10)
), функция возвращает0
. - Если
x
равно или больше 10, но меньше 20 (else if (x < 20)
), возвращает1
. - В противном случае (
else
), возвращается2
.
- Если
function ternary(uint _x) public pure returns (uint){
return _x < 10 ? 1 : 2;
}
-
function ternary(uint _x) public pure returns (uint)
— функция с именемternary
, которая также принимает один аргумент_x
, доступна для всех, не изменяет и не читает данные контракта и возвращает значение типаuint
.В этой функции вместо
if-else
используется тернарный оператор (_x < 10 ? 1 : 2
), который является сокращением для простой конструкцииif-else
:- Если условие
_x < 10
верно, функция возвращает1
. - Если условие неверно, функция возвращает
2
.
- Если условие
Тернарный оператор это как быстрое решение "если-иначе". Задаем вопрос, верно ли условие слева от знака вопроса? Если верно, то выбираем первое значение (слева от двоеточия), если нет — второе (правее двоеточия).
В общем и целом, этот контракт содержит две функции, предназначенные для осуществления простых математических операций сравнения числа, переданного в функцию, с фиксированными порогами (10 и 20) и возвращение соответствующих результатов в зависимости от того, какие условия выполняются.