Switch komutunu kullanarak bir string’in içeriğine göre kodunuzda birkaç seçenekten birini seçebilirsiniz. String, bir dizi desenle karşılaştırılacak ve bir desen string ile eşleştiğinde, o desenle ilişkili kod değerlendirilecektir.
Komutun söz dizimi şu şekildedir:
switch string pattern1 body1 ?pattern2 body2?...?patternN bodyN?
veya
switch string { pattern1 body1 ?pattern2 body2?...?patternN bodyN? }
string
, test etmek istediğiniz string’dir ve pattern1
, pattern2
vb., string’in karşılaştırılacağı desenlerdir. Eğer string bir desene uyuyorsa, o desenle ilişkili kodun içinde yer alan komutlar yürütülür. Body’den dönen değer, switch ifadesinin dönüş değeri olacaktır ve switch komutu tamamlanacaktır. Yalnızca bir desen eşleşecektir.
Eğer son desen argümanı default
string’i ise, bu desen herhangi bir string ile eşleşecektir. Bu, string’in içeriği ne olursa olsun bir dizi kodun yürütüleceğini garanti eder.
Eğer default
argümanı yoksa ve desenlerin hiçbiri string ile eşleşmiyorsa, switch komutu boş bir string döndürecektir.
Eğer bu komutun brace versiyonunu kullanırsanız, desenler üzerinde herhangi bir ikame yapılmaz. Ancak komutun body kısmı, diğer komutlar gibi ayrıştırılacak ve değerlendirilecektir, bu nedenle ilk söz diziminde olduğu gibi üzerinde bir ikame işlemi yapılacaktır. İkinci formun avantajı, çok satırlı komutları köşeli parantezler ile daha okunabilir bir şekilde yazabilmenizdir.
Brace veya if komutlarını kullanırken, body argümanını grup haline getirmek için süslü parantezleri kullanabilirsiniz. Bunun nedeni, bu komutların body argümanını değerlendirilmek üzere Tcl yorumlayıcısına geçirmeleridir. Bu değerlendirme, komut body argümanı dışında olan kodlar için olduğu gibi bir ikame geçişini de içerir.
Aşağıdaki örnekte switch
komutunu kullanarak farklı string desenleri ile nasıl çalıştığını görebilirsiniz:
Ve böylelikle bir bölümün daha sonuna gelmiş olduk. Lütfen sorularınız varsa sormaktan çekinmeyin. Bir sonraki derste görüşmek üzere 😀