Instrukcja switch

<< 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.