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.)
Değer Seçme
Bölüm başlığı “Değer Seçme”saQut’ta ?: üçlü operatörü yoktur; ? yalnızca nullable tip işaretidir
(int?). İki değer arasında seçim yapmak için değişkeni tanımlayıp her dalda
atayın:
int x = 5;
string label;if (x > 0) { label = "positive"; } else { label = "non-positive"; }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
