|
<< Kliknij, aby wyświetlić Spis treści >> Nawigacja: Dodatki > TCL > Sterowanie > Instrukcja switch |
Instrukcja switch porównuje wartość z kilkoma wzorcami i na podstawie otrzymanego wyniku wykonuje jeden z kilku skryptów. switch może być używany w dwóch formach, poniższy przykład prezentuje pierwszą z nich:
switch $x {a {incr t1} b {incr t2} c {incr t3}}
Pierwszym argumentem instrukcji switch jest wartość, która będzie testowana – w przykładzie $x. Drugi argument to lista zawierająca jedną lub więcej par elementów. Z kolei pierwszy argument każdej pary jest wzorcem, z którym jest porównywana testowana wartość, natomiast drugim argumentem pary jest skrypt wykonywany pod warunkiem, że porównanie testowanej wartości i wzorca tej pary wykaże zgodność. switch przechodzi przez wszystkie pary, w kolejności testując wzorzec każdej z nich. Gdy osiągnie zbieżność wzorca i testowanej wartości, wykonuje odpowiedni skrypt. Jeśli żaden wzorzec nie jest taki sam jak testowana wartość, żaden skrypt nie zostanie wykonany.
Druga forma instrukcji switch rozkłada wzorce i skrypty na oddzielne argumenty nie łącząc ich w jedną listę:
switch $x a {incr t1} b {incr t2} c {incr t3}
Najczęściej jednak używana jest pierwsza forma zapisywana w układzie:
switch $x {
a {incr t1}
b {incr t2}
c {incr t3}
}
Instrukcja switch obsługuje trzy rodzaje porównań, ustawiane przełącznikiem:
-exact : dokładne porównanie
-glob : porównywanie wzorców znakowych
-regexp: porównywanie wyrażeń regularnych
Domyślnym jest przełącznik –exact.
Jeśli ostatnim wzorcem jest wartość default, to jest ona zgodna z każdą wartością. Skrypt odpowiadający tej wartości zostanie wykonany jeśli żaden inny wzorzec nie okaże się zgodny z wartością testowaną.
Jeżeli zamiast skryptu zostanie umieszczony znak -, instrukcja switch użyje skryptu z następnej pary:
switch $x {
a -
b -
c {incr t1}
d {incr t2}
}
Skrypt inkrementuje zmienną t1 jeśli x jest równe a, b lub c, ewentualnie inkrementuje zmienną t2 jeśli x jest równe d.