روز ۱۰/۱۰۰ - Solidity If/else و راهنمای جامع گزاره‌های شرطی در زبان سالیدیتی

در زبان برنامه‌نویسی Solidity که برای نوشتن قراردادهای هوشمند در بلاک‌چین اتریوم استفاده می‌شود، از عبارات شرطی مانند if، else if و else پشتیبانی می‌شود. این عبارات به توسعه‌دهندگان اجازه می‌دهند تا با توجه به شرایط خاص، لاجیک را پیاده‌سازی کرده و تصمیم‌گیری کنند. در این مقاله، ما به پیچیدگی‌های استفاده از عبارات if/else در Solidity می‌پردازیم، نحو (ساختار) آن‌ها را بررسی می‌کنیم و مثال‌های دنیای واقعی را برای نشان دادن کاربرد آن‌ها ارائه می‌دهیم. بنابراین، بیایید به دنیای عبارات شرطی Solidity نگاهی عمیق بیندازیم و آن‌ها را بررسی کنیم!

#100DaysOfSolidity 📝 Solidity If/Else
#100DaysOfSolidity 📝 Solidity If/Else


درک دستورات شرطی 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 &quot?&quot 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 را به پایان رساندید. شاد و پیروز باشید!


🔸 این مقاله،از مقالات ترجمه شده از سالیدیتی آکادمی است برای خواندن مقاله اصلی می‌توانید به لینک زیر مراجعه کنید:

https://medium.com/@solidity101/100daysofsolidity-solidity-if-else-a-comprehensive-guide-to-conditional-statements-cb43edb550f7
🔸شمامی‌توانیدبرایخواندنادامهمقالاتترجمهشدهاینآکادمیبهسالیدیتیآکادمیمراجعهکنید.