Нараян Прасти



Download 9,22 Mb.
Pdf ko'rish
bet31/47
Sana26.02.2022
Hajmi9,22 Mb.
#472912
1   ...   27   28   29   30   31   32   33   34   ...   47
Bog'liq
Прасти Н. - Блокчейн. Разработка приложений - 2018


Глава 3 
____________________________________ 
[ 82 ] 
___________________________________ 


a; 


8; 

modifier myModifier2 { 
int 


a; 
_; 

modifier myModifier3 { 


96; 
return; 
_; 


99; 

modifier myModifier4 { 
int 


a; 
_; 

function myFunction() myModifier1(a) myModifier2 myModifier3 returns (int d) 



1; 
return 
a; 


В этом примере мы описали несколько модификаторов и применили эти модифика-
торы к функции 
myFunction()
. Вот как будет выполняться функция 
myFunction()
на 
самом деле: 
int c = b; 
int c = a; 


96; 
return; 
int 


a; 
a = 1; 
return 
a; 


99; 
c = a; 
a = 8; 
В данном случае вызов 
myFunction()
возвратит ноль. Но если затем вы прочитаете 
значение статической переменной 
a
, то окажется, что ее значение равно восьми.
Оператор 
return
в модификаторе или теле функции приводит к немедленному вы-
ходу из функции и возвращает значения переменных в том виде, как есть. 


Разработка 
смарт-контрактов 
____________________________________ 
[ 83 ] 
___________________________________ 
Но в случае нашей функции с модификаторами код после оператора 
return
про-
должает выполняться даже после того, как завершен вызываемый код. То есть, при 
наличии модификатора, код после метки 
_;
в предыдущем модификаторе выполнен 
уже после завершения вызываемого кода. В предыдущем фрагменте (который со-
ответствует фактическому коду функции) строки 
5

6
и 
7
никогда не выполняются. 
После строки номер 
4
будут выполнены строки 
8

9
и 
10

Оператор 
return
внутри модификатора не может иметь связанное значение — он 
всегда возвращает только ноль. 
Резервная функция 
Контракт может содержать только одну безымянную функцию, которая называется 
резервной функцией
(fallback function). Эта функция не может иметь аргументы и 
ничего не возвращает. Она выполняется при обращении к контракту, если ни одно 
имя функции в контракте не совпадает с указанным при вызове идентификатором.
Эта функция также выполняется, как только контракт получает эфир без обраще-
ния к функциям (транзакция переводит эфир контракту, но не вызывает ни одного 
метода контракта). В данном случае для вызова функции доступно очень мало газа 
(точнее, 2300 единиц), поэтому важно делать резервные функции как можно
дешевле
7

Вот небольшой пример резервной функции: 
contract sample 

function() payable 

//например, код для уведомления о том, 
//сколько эфиров было получено 


Наследование 
Solidity поддерживает множественное наследование путем копирования кода, 
включая полиморфизм. Если контракт наследует от нескольких разных контрактов
то в блокчейне создается только один контракт. Код родительских контрактов
всегда копируется в финальный контракт.
7
На практике резервную функцию часто используют в простых смарт-контрактах, единственное на-
значение которых — получать или отправлять дискретные платежи. Например, это может быть кон-
тракт для первоначального размещения токенов, который получает оплату за токен и создает запись
в реестре акционеров. Прочитать больше о резервной функции можно по адресу:
https://github.com/ConsenSys/Ethereum-Development-Best-Practices/wiki/Fallback-functions- 
and-the-fundamental-limitations-of-using-send()-in-Ethereum-&-Solidity
.


Download 9,22 Mb.

Do'stlaringiz bilan baham:
1   ...   27   28   29   30   31   32   33   34   ...   47




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish