“Ternary Operator” Nasıl Çalışır?
Türkçede koşul operatörü olarak bilinen “ternary operator“, bir başka deyişle conditional operator, üç terimli olarak kullanılan tek operatörüdür.
“Ternary Operator” Nedir?
“Ternary” kelimesi, Latince kökenli bir terimdir ve “üçlü” ya da “üçe ait” anlamına gelir. Matematikte ve bilişim bilimlerinde, bu terim genellikle üç bileşeni veya üç değeri olan yapıları tanımlamak için kullanılır.
Özellikle programlama dillerinde “ternary operator” olarak adlandırılan yapı, adından da anlaşılacağı üzere üç bileşenden (koşul, doğru değer, yanlış değer) oluşur. Bu yüzden bu ismi alan operatörümüz, bir koşulun doğru olup olmadığına göre iki değerden birini döndürür. Eğer koşul doğruysa, operatör ilk değeri döndürür, aksi takdirde ikinci değeri döndürür.
C dilinden tutun da, Java’da, JavaScript’te ve daha birçok başka dilde aşağıdaki gibi 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 ile 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, genellikle “if-else” ifadeleri daha okunabilir ve anlaşılır olacaktır.
Ternary operator, birçok programlama dilinde kullanılabilmektedir, bunlardan bazıları aşağıda gösterilmiştir:
- C
- C++
- C#
- Java
- JavaScript
- Ruby
- Swift
- PHP