در زبان دارت، شما میتوانید از ساختار switch-case برای انتخاب بین چندین گزینه مختلف استفاده کنید. در اینجا نحوه استفاده از switch-case در دارت را آموزش میدهیم.
ساختار کلی switch-case به صورت زیر است:
switch(expression) {
case value1:
// کدی که باید در صورت برابر بودن expression با value1 اجرا شود
break;
case value2:
// کدی که باید در صورت برابر بودن expression با value2 اجرا شود
break;
.
.
.
case valueN:
// کدی که باید در صورت برابر بودن expression با valueN اجرا شود
break;
default:
// کدی که در صورتی اجرا میشود که هیچ یک از مقادیر value1 تا valueN با expression برابر نباشند
break;
}
در این ساختار، expression مقداری است که میخواهید با آن بررسی کنید و بین مقادیر value1 تا valueN انتخاب کنید. بعد از expression، شما یک بلوک case برای هر یک از مقادیر value1 تا valueN دارید. در هر بلوک case، کدی که باید در صورت برابری expression با مقدار آن بلوک اجرا شود را قرار میدهید. در نهایت، شما یک بلوک default دارید که کدی را که در صورتی که هیچ یک از مقادیر value1 تا valueN با expression برابر نباشند، باید اجرا شود را قرار میدهید.
برای مثال، اگر بخواهید برنامهای بنویسید که با توجه به ماه، فصل سال را نمایش دهد، میتوانید از switch-case استفاده کنید. کد زیر این کار را انجام میدهد:
void main() {
int month = 7;
String season;
switch (month) {
case 12:
case 1:
case 2:
season = 'زمستان';
break;
case 3:
case 4:
case 5:
season = 'بهار';
break;
case 6:
case 7:
case 8:
season = 'تابستان';
break;
case 9:
case
case 10:
case 11:
season = 'پاییز';
break;
default:
season = 'ماه وارد شده معتبر نیست';
break;
}
print('فصل سال: $season');
}
در مثال قبل شما یک متغیر month با مقدار 7 دارید. در بلوک switch، بررسی میکنید که اگر month با یکی از مقادیر 12، 1 و 2 برابر بود، season باید زمستان باشد؛ اگر با 3، 4 و 5 برابر بود، season باید بهار باشد؛ اگر با 6، 7 و 8 برابر بود، season باید تابستان باشد؛ و اگر با 9، 10 و 11 برابر بود، season باید پاییز باشد. در نهایت، شما یک بلوک default دارید که در صورتی که month با هیچ یک از مقادیر بالا برابر نباشد، season باید “ماه وارد شده معتبر نیست” باشد.
توجه داشته باشید که شما میتوانید برای هر بلوک case چندین مقدار را در نظر بگیرید، همانطور که در مثال بالا برای ماههای زمستان، ژانویه، فوریه و دسامبر این کار را کردهایم.
همچنین در switch case میتوانید از متغیرهای دیگر نیز برای مقایسه استفاده کنید. برای مثال، در کد زیر میخواهیم بر اساس رنگی که کاربر وارد میکند، پیامی مناسب چاپ کنیم:
void main() {
String color = 'سبز';
switch (color) {
case 'قرمز':
print('رنگ قرمز یکی از رنگهای پرطرفدار است.');
break;
case 'آبی':
print('رنگ آبی بیانگر آرامش و ثبات است.');
break;
case 'سبز':
print('رنگ سبز نشاندهنده طبیعت و زیبایی آن است.');
break;
default:
print('رنگ وارد شده معتبر نیست.');
break;
}
}
در این مثال، شما یک متغیر color با مقدار ‘سبز’ دارید. در بلوک switch، بررسی میکنید که اگر color با یکی از مقادیر ‘قرمز’، ‘آبی’ و ‘سبز’ برابر بود، یک پیام مناسب چاپ کنید؛ و در صورتی که با هیچ یک از این مقادیر برابر نبود، پیام “رنگ وارد شده معتبر نیست.” را چاپ کنید.
همچنین میتوانید از switch case به همراه مقدار بازگشتی استفاده کنید. به عنوان مثال، در کد زیر، یک تابع به نام calculate برای انجام یکی از عملیات جمع، تفریق، ضرب و تقسیم بر اساس یک عملگر و دو عدد ورودی تعریف شده است:
void main() {
print(calculate('+', 10, 5)); // خروجی: 15
print(calculate('-', 10, 5)); // خروجی: 5
print(calculate('*', 10, 5)); // خروجی: 50
print(calculate('/', 10, 5)); // خروجی: 2
}
num calculate(String operator, num num1, num num2) {
switch (operator) {
case '+':
return num1 + num2;
case '-':
return num1 - num2;
case '*':
return num1 * num2;
case '/':
return num1 / num2;
default:
print('عملگر
{
در مثال قبل، تابع calculate یک رشته (operator) و دو عدد (num1 و num2) دریافت میکند. با استفاده از switch case، بررسی میشود که اگر operator با یکی از عملگرهای ‘+’, ‘-‘, ‘*’ و ‘/’ برابر بود، محاسبات مربوط به آن عملگر انجام شده و مقدار بازگشتی برگردانده میشود؛ و در صورتی که با هیچ یک از این عملگرها برابر نبود، مقدار null برگردانده میشود.
به طور کلی، switch case یکی از روشهای انتخابی برای بررسی شرایط در برنامهنویسی در زبان دارت است. با استفاده از این روش، میتوانید شرایط مختلف را بررسی کنید و بر اساس آنها، کد مناسبی را اجرا کنید.
در ادامه چند مثال دیگر با switch case در زبان دارت را برای شما میزنیم:
در این مثال، یک عدد را دریافت میکنیم و بررسی میکنیم که آیا این عدد صفر است، مثبت است یا منفی است.
void main() {
int number = 10;
switch (number) {
case 0:
print('عدد ورودی صفر است.');
break;
case int:
print('عدد ورودی مثبت است.');
break;
default:
print('عدد ورودی منفی است.');
break;
}
}
در مثال قبل با استفاده از switch case، عدد ورودی کاربر را بررسی کرده و بر اساس آن پیام مناسبی را چاپ میکنیم.
ابتدا یک عدد به عنوان مثال مقداردهی اولیه میشود. در ادامه با استفاده از switch case، عدد ورودی بررسی میشود. اگر عدد ورودی برابر با صفر بود، پیام “عدد ورودی صفر است.” چاپ میشود. اگر عدد ورودی مثبت بود، پیام “عدد ورودی مثبت است.” چاپ میشود. در صورتی که عدد ورودی هیچ یک از شرایط فوق را نداشت، پیام “عدد ورودی منفی است.” چاپ میشود.
مثال ۱: اجرای switch با یک عدد ورودی
void main() {
int num = 2;
switch (num) {
case 1:
print("شماره ۱ انتخاب شد.");
break;
case 2:
print("شماره ۲ انتخاب شد.");
break;
case 3:
print("شماره ۳ انتخاب شد.");
break;
default:
print("شماره انتخابی نامعتبر است.");
}
}
مثال ۲: اجرای switch با یک رشته ورودی
void main() {
String color = "green";
switch (color) {
case "red":
print("رنگ قرمز انتخاب شد.");
break;
case "green":
print("رنگ سبز انتخاب شد.");
break;
case "blue":
print("رنگ آبی انتخاب شد.");
break;
default:
print("رنگ انتخابی نامعتبر است.");
}
}
مثال ۳: استفاده از شرط در هر case
void main() {
int num = 6;
switch (num) {
case 1:
case 3:
case 5:
print("عدد فرد انتخاب شد.");
break;
case 2:
case 4:
case 6:
print("عدد زوج انتخاب شد.");
break;
default:
print("عدد انتخابی نامعتبر است.");
}
}
مثال ۴: استفاده از switch در یک تابع
void main() {
int input = 2;
switchFunction(input);
}
void switchFunction(int input) {
switch (input) {
case 1:
print("تابع یک فراخوانی شد.");
break;
case 2:
print("تابع دو فراخوانی شد.");
break;
case 3:
print("تابع سه فراخوانی شد.");
break;
default:
print("مقدار ورودی نامعتبر است.");
}
}
switch و case در دارت معمولا برای بررسی یک مقدار و انجام عملیاتهای مختلف بر اساس آن مقدار استفاده میشوند. برای نمونه، در برنامههایی که به کاربر اجازه انتخاب گزینههای مختلف را میدهند، switch و case میتوانند برای بررسی گزینهها و اجرای دستورات مربوط به هر گزینه استفاده شوند.
switch و case در برنامهنویسی اپلیکیشن ها که بعد در دوره فلاتر میرسیم نیز مورد استفاده قرار میگیرند. به عنوان مثال، در یک اپلیکیشن switch و case میتوانند سرعت اجرای برنامه را بالاتر ببرند
همچنین، switch و case میتوانند در برنامههایی که بر اساس یک شرط مشخصی، انواع مختلفی از دستورات را اجرا میکنند، مورد استفاده قرار میگیرند. به عنوان مثال، در یک برنامه فروشگاهی switch و case میتوانند برای بررسی نوع محصول و انجام دستورات مربوط به آن محصول استفاده شوند.