switch-case
語句是一種多分支選擇結構,它根據一個表達式的值來選擇執行相應的代碼塊。這種結構在不同編程范式中都有廣泛的應用,包括過程式編程、面向對象編程和函數式編程。
switch-case
語句通常用于處理基于某個變量值的多個條件分支。這種結構可以使代碼更加清晰和易于維護,因為它將不同條件下的處理邏輯分開,而不是使用多層嵌套的 if-else
語句。#include<stdio.h>
int main() {
int day = 3;
switch (day) {
case 1:
printf("Monday\n");
break;
case 2:
printf("Tuesday\n");
break;
case 3:
printf("Wednesday\n");
break;
default:
printf("Invalid day\n");
}
return 0;
}
switch-case
語句可以用于實現多態性,即根據對象的類型來執行不同的操作。這可以通過在基類中定義一個虛函數,并在派生類中重寫該函數來實現。然后,可以使用 switch-case
語句來根據對象的類型調用相應的函數。#include<iostream>
class Animal {
public:
virtual void makeSound() = 0;
};
class Dog : public Animal {
public:
void makeSound() override {
std::cout << "Woof!"<< std::endl;
}
};
class Cat : public Animal {
public:
void makeSound() override {
std::cout << "Meow!"<< std::endl;
}
};
int main() {
Animal *animal = new Dog();
int animalType = 1; // 1 for Dog, 2 for Cat
switch (animalType) {
case 1:
static_cast<Dog*>(animal)->makeSound();
break;
case 2:
static_cast<Cat*>(animal)->makeSound();
break;
default:
std::cout << "Invalid animal type"<< std::endl;
}
delete animal;
return 0;
}
switch-case
語句可以用于實現模式匹配,即根據輸入的形式來執行不同的操作。這可以通過使用函數式編程語言提供的模式匹配特性來實現,例如 Haskell 中的 case
語句。data Day = Monday | Tuesday | Wednesday
dayToString :: Day -> String
dayToString day = case day of
Monday -> "Monday"
Tuesday -> "Tuesday"
Wednesday -> "Wednesday"
main :: IO ()
main = putStrLn $ dayToString Wednesday
總之,switch-case
語句在不同編程范式中都有廣泛的應用,可以幫助我們編寫更加清晰、易于維護的代碼。