if / else
Koşullu ifadeler, programınızın karar vermesini sağlar. Bir koşulun true
veya false olmasına bağlı olarak farklı kod çalışır.
Temel if
Bölüm başlığı “Temel if”int x = 5;
if (x > 0) { print("positive");}Parantez içindeki koşul truthy (sıfırdan farklı herhangi bir değer) ise blok çalışır. Falsy (sıfır) ise blok atlanır.
saQut, C tarzı truthiness kullanır: 0 false, diğer her şey true kabul
edilir.
if / else
Bölüm başlığı “if / else”int x = -3;
if (x > 0) { print("positive");} else { print("not positive");}if / else if / else
Bölüm başlığı “if / else if / else”Birden çok koşulu zincirleyin:
int score = 75;
if (score >= 90) { print("A");} else if (score >= 70) { print("B");} else if (score >= 50) { print("C");} else { print("F");}İç İçe if
Bölüm başlığı “İç İçe if”if ifadelerini başka if ifadelerinin içine yerleştirebilirsiniz:
int x = 10;int y = 5;
if (x > 0) { if (y > 0) { print("both positive"); }}Süslü Parantezsiz Kullanım
Bölüm başlığı “Süslü Parantezsiz Kullanım”Blok tek bir ifade içeriyorsa süslü parantezleri yazmayabilirsiniz:
if (x > 0) print("positive");else print("not positive");Dikkatli olun; süslü parantezleri kaldırmak kafa karıştırıcı koda yol
açabilir. Emin değilseniz { } kullanın.
Sık Kullanılan Kalıplar
Bölüm başlığı “Sık Kullanılan Kalıplar”Gard cümlesi (erken çıkış)
Bölüm başlığı “Gard cümlesi (erken çıkış)”int divide(int a, int b) { if (b == 0) { return 0; // gard, erken çık } return a / b;}Nullable türler için null kontrolü
Bölüm başlığı “Nullable türler için null kontrolü”int? value = getMaybeValue();
if (value != null) { // Bu blok içinde 'value' artık null değildir print(value);}Bir Koşulu Ne Doğru Yapar?
Bölüm başlığı “Bir Koşulu Ne Doğru Yapar?”Koşul bir değer üretmelidir. Sıfırdan farklı her değer truthy’dir:
if (1) { print("çalışır"); } // sıfırdan farklı → truthyif (0) { print("çalışmaz"); } // sıfır → falsyif (42) { print("çalışır"); } // sıfırdan farklı → truthyif (-1) { print("çalışır"); } // sıfırdan farklı → truthyKarşılaştırma operatörleri (==, !=, <, >, <=, >=) veya mantıksal
operatörler (&&, ||, !) içeren koşullar her zaman true (1) veya
false (0) döndürür.
Koşulları Birleştirme
Bölüm başlığı “Koşulları Birleştirme”Koşulları && (ve), || (veya) ve ! (değil) ile birleştirin:
int age = 25;bool hasTicket = true;
if (age >= 18 && hasTicket) { print("welcome");}
if (age < 13 || age > 65) { print("discounted");}&& ve || kısa devre yapar: cevap belli olur olmaz dururlar. && ile
sol taraf false ise sağ taraf hiç değerlendirilmez; || ile sol taraf
true ise sağ taraf atlanır. Bu sayede bir kontrolü, onu güvenli kılan test
ile koruyabilirsiniz:
// 'b != 0' kontrolü bölmeyi korur, soldan sağa değerlendirilirif (b != 0 && a / b > 2) { print("ratio is large");}Tam öncelik kuralları için operatörler sayfasına bakın.
İleri Seviye: Nullable Türleri Daraltma
Bölüm başlığı “İleri Seviye: Nullable Türleri Daraltma”Bir nullable değer (int?, string?, …)
doğrudan kullanılamaz: derleyici null olabileceği için reddeder:
int? x = getValue();print(x + 1); // HATA (E003), 'x' null olabilirBir if (x != null) kontrolü türü daraltır: blok içinde x’in tipi int?
değil int’tir, bu yüzden onu düz bir int olarak kullanabilirsiniz:
int? x = getValue();
if (x != null) { print(x + 1); // TAMAM, bu blok içinde null olmayan int'e daraltıldı}Daraltma && üzerinden de çalışır: solda null kontrolünü yaptıktan sonra
sağ taraf değeri zaten null değilmiş gibi görür:
int? x = getValue();
if (x != null && x > 5) { // 'x > 5'e izin verilir: x burada null değil print("big");}Nullable bir değeri kullanmanın tek yolu budur: x! zorla-unwrap yoktur,
?. operatörü yoktur. Kontrol kodda görünürdür ve güvenlik sıfır çalışma
zamanı maliyetiyle derleme zamanında kanıtlanır. (Bkz.
veri türlerinde null güvenliği.)
Ternary Alternatifi
Bölüm başlığı “Ternary Alternatifi”“İki değerden birini seç” gibi basit durumlarda, ternary
operatörü ?:, tam bir if yerine kompakt bir
ifadedir:
int x = 5;
// if / elsestring label;if (x > 0) { label = "positive"; } else { label = "non-positive"; }
// aynısı ternary ilestring label2 = x > 0 ? "positive" : "non-positive";İfade çalıştırmak için if kullanın; yalnızca bir değer seçmek için ?:
kullanın.
Sırada Ne Var?
Bölüm başlığı “Sırada Ne Var?”- Bir değeri çok sayıda seçenekle karşılaştırmak için switch
- Kodu tekrarlamak için for döngüleri
- Truthiness ve tür dönüşümlerini veri türleri sayfasından öğrenin
