AI & ML; Python Programmer And Interested In Decentralized World
روز ۱۰/۱۰۰ - Solidity If/else و راهنمای جامع گزارههای شرطی در زبان سالیدیتی
در زبان برنامهنویسی Solidity که برای نوشتن قراردادهای هوشمند در بلاکچین اتریوم استفاده میشود، از عبارات شرطی مانند if، else if و else پشتیبانی میشود. این عبارات به توسعهدهندگان اجازه میدهند تا با توجه به شرایط خاص، لاجیک را پیادهسازی کرده و تصمیمگیری کنند. در این مقاله، ما به پیچیدگیهای استفاده از عبارات if/else در Solidity میپردازیم، نحو (ساختار) آنها را بررسی میکنیم و مثالهای دنیای واقعی را برای نشان دادن کاربرد آنها ارائه میدهیم. بنابراین، بیایید به دنیای عبارات شرطی Solidity نگاهی عمیق بیندازیم و آنها را بررسی کنیم!
درک دستورات شرطی if/else
عبارات شرطی if/else در زبان سالیدیتی، مشابه سایر زبانهای برنامهنویسی، به توسعهدهندگان اجازه میدهند تا با اتکا به شرایط خاص، جریان کد خود را کنترل کنند. این شرایط میتوانند با استفاده از عملگرهای مقایسهای مختلف مانند کمتر از (<)، بیشتر از (>), مساوی با (==) و غیره ارزیابی شوند. عبارات if/else بلوکهای مختلف کد را بسته به اینکه شرایط برآورده شده باشند یا نه، اجرا میکنند.
سینتکس:
ساختار پایه ای دستور if/else در Solidity به شرح زیر است:
```
if (condition) {
// code to be executed if the condition is true
} else if (condition) {
// code to be executed if the condition is true
} else {
// code to be executed if none of the above conditions are true
}
```
در نحو بالا، "condition" بیانگر عبارت منطقی است که برای تعیین بلوک کد مورد نظر برای اجرا ارزیابی می شود. می توان از چندین بلوک else if
برای بررسی شرایط اضافی استفاده کرد و بلوک else
اختیاری است و زمانی اجرا می شود که هیچ یک از شرایط قبلی برقرار نباشد.
مثال یک قرارداد هوشمند
برای درک بهتر کاربرد عبارات شرطی if/else در زبان برنامهنویسی سالیدیتی، به بررسی مثال زیر میپردازیم:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;
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;
// shorthand way to write if/else statement
// the "?" operator is called the ternary operator
return _x < 10 ? 1 : 2;
}
}
در این قرارداد، دو تابع داریم: foo
و ternary
. به بررسی هر کدام از آنها به صورت جداگانه میپردازیم.
تابع foo:
تابع foo
یک آرگومان x
را دریافت میکند و یک مقدار uint
را برمیگرداند. این تابع از عبارات if/else
برای تعیین مقدار بازگشتی مناسب بر اساس مقدار x
استفاده میکند. اگر x
کمتر از 10 باشد، 0 را برمیگرداند. اگر x
بین 10 و 20 باشد، 1 را برمیگرداند. در غیر این صورت، 2 را برمیگرداند.
تابع ternary:
تابع ternary
یک آرگومان _x
را دریافت میکند و یک مقدار uint
را برمیگرداند. این تابع روش جایگزینی برای نوشتن عبارات if/else
با استفاده از عملگر سهگانه ارائه میدهد. عملگر سهگانه که با نماد "?" نشان داده میشود، به توسعهدهندگان اجازه میدهد تا عبارات if/else
مختصری را در یک خط بنویسند. در این مثال، اگر _x
کمتر از 10 باشد، 1 را برمیگرداند، در غیر این صورت 2 را برمیگرداند.
بررسی دقیق قرارداد هوشمند:
برای درک بهتر عملکرد و شرایط بررسی شده در تابع foo
، به تحلیل دقیق آن میپردازیم:
function foo(uint x) public pure returns (uint) {
if (x < 10) {
return 0;
} else if (x < 20) {
return 1;
} else {
return 2;
}
}
تابع foo
یک عدد صحیح بدون علامت (uint
) به نام x
را به عنوان ورودی دریافت میکند و بر اساس بررسیهای شرطی، یک عدد صحیح بدون علامت را به عنوان خروجی برمیگرداند. در ادامه نحوه عملکرد عبارات شرطی if/else
در داخل این تابع شرح داده شده است.
۱. اگر مقدار x
کمتر از 10 باشد، شرط x < 10
به True
ارزیابی میشود و بلوک کد داخل اولین عبارت if
اجرا میشود. در نهایت، این کد 0 را به عنوان نتیجه بازمیگرداند.
۲. اگر شرط اول برقرار نباشد، کنترل به عبارت else if (x < 20)
میرود. اگر مقدار x
بین 10 و 20 (بدون احتساب 20) باشد، شرط برقرار شده و کد مربوطه اجرا میشود. این کد 1 را به عنوان نتیجه باز میگرداند.
۳. اگر هیچ یک از دو شرط اول برقرار نباشد، کنترل به بلوک else میرود. این بلوک به عنوان یک راه حل جایگزین عمل میکند و در صورتی که هیچ یک از شرایط قبلی درست نباشد، اجرا میشود. در این حالت، 2 را به عنوان نتیجه برمیگرداند.
با استفاده از این عبارات شرطی if/else
، تابع foo
روشی برای دستهبندی مقدار ورودی x
در بازههای مختلف ارائه میدهد و مقادیر متناظر با آن بازهها را برمیگرداند.
نتجهگیری:
در این مقاله، مفهوم عبارات شرطی if/else در سالیدیتی را بررسی کردیم که به توسعهدهندگان امکان میدهد منطق شرطی را در قراردادهای هوشمند خود پیادهسازی کنند. ما به نحوۀ نگارش عبارات if/else پرداختیم و یک تجزیه و تحلیل دقیق از یک قرارداد هوشمند نمونه که از این عبارات استفاده میکند ارائه دادیم. همچنین اپراتور سهتایی را به عنوان روشی اختصاری برای نوشتن عبارات if/else معرفی کردیم. با استفاده از عبارات if/else در سولیدیتی، توسعهدهندگان میتوانند قراردادهای هوشمند پویاتر و انعطافپذیرتری ایجاد کنند که به شرایط خاص پاسخ دهند. درک و استفاده از این عبارات شرطی برای ساختن قراردادهای هوشمند قوی و قابل اعتماد در بلاکچین اتریوم ضروری است.
کد نمونه:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;
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) {
return _x < 10 ? 1 : 2;
}
}
این کد نمونه نحوه استفاده از عبارات شرطی if/else
در زبان سالیدیتی را نشان میدهد. تابع foo
مقدار ورودی x
را در دستههای مختلف دستهبندی میکند و مقادیر متناظر را برمیگرداند، در حالی که تابع ternary
روش کوتاهنویسی برای نوشتن عبارات if/else
با استفاده از عملگر سهگانه را نشان میدهد.
تبریک! شما یادگیری نحوه استفاده از دستورات if/else در زبان برنامهنویسی Solidity را به پایان رساندید. شاد و پیروز باشید!
🔸 این مقاله،از مقالات ترجمه شده از سالیدیتی آکادمی است برای خواندن مقاله اصلی میتوانید به لینک زیر مراجعه کنید:
مطلبی دیگر از این انتشارات
روز ۴/۱۰۰ - متغیرهای Solidity: بررسی متغیرهای Local، State، و Global
مطلبی دیگر از این انتشارات
🎉 برای سری #۱۰۰روزباسالیدیتی آماده شوید! 🚀
مطلبی دیگر از این انتشارات
روز 6/100 - درک immutability در سالیدیتی: ساخت قراردادهای هوشمند قابل اعتماد