Evet. Anahtarlar, dil bloğu deyim kalıbını bozar, ancak bu, esas olarak Java tarafından kullanılan anahtar deyiminin temel aldığı C/C++ nedeniyle oluşur. Bir switch deyimi geleneksel dil desen kırar
switch(variable) {
case n:
statement 1;
statement n;
(optional) break;
case n+1:
statement 1;
statement n;
(optional) break;
// Optionally more statements
(optional) default:
statement 1;
statement n;
}
Çünkü birçok programcı geleneksel blok stilini kullanarak bir durumda onların çoklu ifadeleri sarın: Her üç dilde
, switch deyimi şu biçimde olur { }
Bunun nedeni, her üç dilde de çoğu yapının blok stil deyimlerinin tek bir deyim olarak kabul edilmesine izin vermesidir, ancak anahtar deyimi tek bir durumda birden çok deyimi yürütmek için blok stili gerektirmez.
Her bir durumu ayıran break ifadesi olmadan, "fall through" olacaktır - eğer n durumu eşleştiyse ve bir ara vermediyse, altındaki kod (case n + 1) - eğer case n + 1 bir ara vermediler ve eşleştiler, varsayılan kod çalıştırılamazdı, eğer ne bir ara verdiyse, n harfini eşleştirirken, case n için kod, case n + 1 ve default çalıştırılacaktı.
Varsayılan isteğe bağlıdır ve çalıştırılacak anahtar ifadesi için varsayılan eylemi belirtir. Tipik olarak, varsayılan koşul, anahtar deyimindeki değerlerin mantıksal olarak başka bir değeri olamazsa, bir genel işleyici veya bir istisna atmak için iyi bir yerdir.Sadece söyleyerek ... Bu bunu kendiniz test olabilirdi bu soruyu yazmak için aldık sürede
String message = null;
int outerVariable = getOuterVariable();
switch(outerVariable) {
case n:
statement 1;
statement n;
break;
case n+1:
int innerVariable = getInnerVariable();
switch(innerVariable) {
case 1:
message = "IT WAS 1";
break;
default:
message = "WHY WOULD YOU DO THIS? OH THE HUMANITY!";
}
break;
// Optionally more statements
(optional) default:
statement 1;
statement n;
}
:
bu yapmacık örnek bir göz atın, bir switch ifadesi içindeki yürütme bir switch deyimi göstermek için ... –Sanırım SO noktası, insanların bir fikri test etmek için kod yazmasına gerek duymamasıdır. –
@ande_turner: no. SO, sorulara cevap vermek, insanlar yerine işleri yapmak için değil. "Evet ama yapma" nın özeti için –