Ternary Operator Nedir?
Türkçede “koşul operatörü” olarak bilinen ve programlamada yaygın olarak kullanılan “ternary operator” (diğer adıyla conditional operator), üç bileşenli yapısıyla dikkat çeker. “Ternary” kelimesi, Latince kökenlidir ve “üçlü” veya “üçe ait” anlamına gelir. Matematikte ve bilişim bilimlerinde, bu terim genellikle üç elemanı veya değeri olan yapılar için kullanılır.
Programlama dillerinde “ternary operator,” bir koşula bağlı olarak iki farklı değerden birini döndürmek için kullanılır. Yapının üç bileşeni şunlardır:
- Koşul: Değerlendirilecek ifade.
- Doğru değer: Koşul doğruysa döndürülecek sonuç.
- Yanlış değer: Koşul yanlışsa döndürülecek sonuç.
Operatörün çalışma mantığı basittir: Eğer koşul doğruysa belirtilen ilk değer döndürülür; koşul yanlışsa ikinci değer döndürülür. Bu yapı, kısa ve okunabilir bir şekilde karar mekanizmaları kurmaya olanak tanır.
Örneğin, şu ifade:
x = 5
sonuc = "Pozitif" if x > 0 else "Negatif veya sıfır"
x
değişkeninin pozitif olup olmadığını kontrol eder ve sonucu buna göre belirler. Eğer x > 0
koşulu doğruysa, sonuc
“Pozitif” olur; aksi halde “Negatif veya sıfır” değerini alır.
C dilinden tutun da, Java’da, JavaScript’te ve daha birçok başka dilde şu söz dizimi kullanılır: koşul ? değer1 : değer2
- İlk olarak “koşul” değerlendirilir.
- Eğer “koşul” doğruysa (yani
true
ise),değer1
döndürülür. - Eğer “koşul” yanlışsa (yani
false
ise),değer2
döndürülür.
Koşul operatörü, if-else koşul yapısı ile aynı işlemi yapar, ancak aynı koşul ifadesinin daha kısa ve okunaklı bir şekilde yazılabilmesini sağlar. Kafa karışıklığına yol açmaması için ilgili koşulları parantezler içine de alabilirsiniz.
İlk olarak JavaScript’te if-else kullanılarak yazılmış aşağıdaki örneği inceleyelim:
function yasDurumu(yas) {
if (typeof yas === 'undefined') {
return "Yaş bilgisi eksik";
} else {
return yas >= 18 ? "Yetişkin" : "Çocuk";
}
}
console.log(yasDurumu(20)); // Yetişkin
console.log(yasDurumu(15)); // Çocuk
console.log(yasDurumu()); // Yaş bilgisi eksik
Bu örnekte, ilk olarak if
kullanarak yas
değişkeninin tanımlı olup olmadığını kontrol ediyoruz. Eğer tanımlı değilse “Yaş bilgisi eksik” döndürüyoruz. Tanımlıysa, else
bloğunda ternary operatörü kullanarak 18 yaşından büyük olup olmadığını kontrol ediyoruz. Bu kontrol sonucuna göre “Yetişkin” ya da “Çocuk” mesajını döndürüyoruz.
Yukarıdaki örneğimizi bu sefer de “Ternary operator” kullanarak kodlayalım:
function yasDurumu(yas) {
return yas >= 18 ? "Yetişkin" : "Çocuk";
}
console.log(yasDurumu(20)); // Yetişkin
console.log(yasDurumu(15)); // Çocuk
Yukarıdaki örneğimizde de benzer şekilde eğer verilen koşul sağlanıyorsa yas
değeri soru işaretinden (?
) hemen sonraki değere eşit olacaktır. Buna karşılık, eğer koşul sağlanmıyorsa çift noktadan (:
) sonraki değere eşit olacaktır.
Bu iki yaklaşım arasında fonksiyonellik açısından bir fark yoktur. Ancak ikinci yöntem, kodu daha kısa ve okunabilir hale getirdiği için tercih edilmektedir. Özellikle tek satırda bir if-else ifadesini temsil etmek istiyorsanız “ternary” operatörü oldukça kullanışlıdır. Ancak karmaşık durumlar veya çoklu şartlarla uğraşırken “if-else” ifadeleri daha okunabilir ve anlaşılır olacaktır.
Ternary operator, birçok programlama dilinde kullanılabilmektedir. Bakınız:
- C
- C++
- C#
- Java
- JavaScript
- Ruby
- Swift
- PHP