int weekDay = 3; String status; switch(weekDay) { case 1: case 2: case 3: case 4: case 5: status = "working"; break; case 6: case 7: status = "resting"; break; default: status = "unknown"; }
Burada int tipinden weekDay değişkeninin 1 ile 7 arasındaki değerleri için String tipinden status değişkenine farklı değerler atamak istiyoruz: "working", "resting" ve "unknown". switch'in bu kullanımı ile ilgili iki temel problem bulunuyor:
- switch değişkeninin (weekDay) bir aralıktaki değerleri için özel bir gösterim bulunmuyor. O nedenle, yukarıda weekDay değişkeninin [1-5] aralığındaki değerlerini karşılaştırmak üzere aralıktaki her bir değer için case tanımlamak zorunda kaldık.
- switch değişkeninin değeri, case ile verilen sabitler ile olan eşitliği sırayla sınanır. Eğitlik olduğunda tüm case ifadeleri eşitliğine bakılmaksızın break ile karşılaşıncaya kadar çalıştırılır. switch yapısında break kullanımı tercihe bağlıdır. Unutulmuş olması ya da yerinde kullanılmaması yanlış bir akışa yol açacaktır ve okumayı güçleştirmektedir.
int weekDay = 3; String status; switch(weekDay) { case 1,2,3,4,5: status = "working"; break; case 6,7: status = "resting"; break; default: status = "unknown"; }
Bu gösterimde break kullanımına dikkat edilmesi gerekiyor. İkinci gösterimde ise break kullanımına ihtiyaç duymuyoruz:
int weekDay = 3; String status; switch (weekDay) { case 1, 2, 3, 4, 5 -> { status = "working"; } case 6, 7 -> { status = "resting"; } default -> { status = "unknown"; } }
Bu gösterimde lambda ifadesi gösteriminden yararlanıldığını görüyoruz. Eğer amacınız yukarıdaki örneklerde olduğu gibi case değerlerine göre bir değişkenin değerini belirlemek ise bunu daha yalın bir gösterimle yapabilirsiniz:
var weekDay = 3; var status = switch (weekDay) { case 1, 2, 3, 4, 5 -> "working"; case 6, 7 -> "resting"; default -> "unknown"; };
Bu gösterimde lambda ifadesi değişkenin değerini dönüyor. Lambda ifadesinin kullanıldığı yukarıdaki gösterim yerine break ile değeri döndüğümüz gösterimi de kullanabilirsiniz:
var weekDay = 3; var status = switch (weekDay) { case 1, 2, 3, 4, 5 : break "working"; case 6, 7 : break "resting"; default : break "unknown"; };
Yukarıdaki gösterimin bir başka yazılımı aşağıda verilmiştir:
var weekDay = 3; var status = switch (weekDay) { case 1, 2, 3, 4, 5 -> { break "working"; } case 6, 7 -> { break "resting" ;} default -> { break "unknown"; } };
Bu yazıda Java 12 ile birlikte gelen yeni switch gösteriminin dört farklı yüzünü inceledik. Lambda ifadesi gösteriminin kullanıldığı switch ifadelerinin daha okunabilir olduğu söylenebilir.
No comments:
Post a Comment