Hem yararını anlamadığımdan hem de C++'ta da onsuz yaşanabildiğinden with deyimini hiç kullanmıyorum. Hatta kitapta hiçbir yerde geçmiyor. :blush: Yararlı bir kullanımını öğrendim.
Şu kodda fazla laf kalabalığı var:
enum FutbolMaçıSonucu { berabere, birinciKazandı, ikinciKazandı }
void main()
{
FutbolMaçıSonucu sonuç;
// ...
final switch (sonuç) {
case FutbolMaçıSonucu.berabere:
// ...
break;
case FutbolMaçıSonucu.birinciKazandı:
// ...
break;
case FutbolMaçıSonucu.ikinciKazandı:
// ...
break;
}
}
with deyimi kodu daha temiz yapıyor:
final switch (sonuç) with (FutbolMaçıSonucu) {
case berabere:
// ...
break;
case birinciKazandı:
// ...
break;
case ikinciKazandı:
// ...
break;
}
Bilmeyenler için: with, "bu blokta bilmediğin isimleri şununla dene" gibi bir anlama geliyor. Sonuçta tek başına 'birinci' yazmak yasal olmadığından derleyici bir de 'FutbolMaçıSonucu.birinci' olarak deniyor ve derleniyor.
with'e bir nesne bile verilebiliyor. O zaman derleyicinin bilmediği isimler o nesnenin üzerinde de deneniyorlar:
struct S
{
int üye;
void işlev()
{}
}
void main()
{
auto nesne = S();
with (nesne) {
üye = 42; // nesne.üye anlamında
işlev(); // nesne.işlev() anlamında
}
}
Ali
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]