Forum: Ders Arası RSS
scope Kullanımı
Kadir Can #1
Üye Haz 2010 tarihinden beri · 413 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: scope Kullanımı
Merhaba.

Ben show kodunun işlevden çıkılınca bir satır atlamasını istiyordum.Şu şekilde yaptım:
    void show(){
        write("<",tag);
        for( int i = 0 ; i < attributes.length ; i++ ) {
            write(" ",attributes.keys[i],"=","\"",attributes.values[i],"\"");
        }
        write(">");
        write(context);
        for( int j = 0 ; j < elements.length ; j++ ) {
            elements[j].show();
        }
        write("<\\",tag,">");
        scope (exit) writeln();
    }

Burdaki scope kullanımı amacına uygun mu olmuş,yoksa yerine başka bir şey mi kullanmak lazım?

NOT:İşlev istediğim görevi yerine getiriyor ve işlevden çıkılınca writeln(); gerçekleştiriyor.
acehreli (Moderatör) #2
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
scope (exit)'in anlamı "hata atılarak bile çıkılsa işlet". Eğer amacımız oysa doğru olmuş ama onun yerine RAII denen yöntem de uygulanır. C++'da scope bulunmadığı için zaten RAII'den başka çare de yoktur. O yüzden benim deneyimim fazla değil.

Burada kapama tag'inin de mutlaka yazdırılması gerektiği için şöyle de olabilir:

    scope (exit) {
        write("<\\",tag,">");
        writeln();
    }

Ve tabii hepsi birden writeln de olabilir:

    scope (exit) writeln("</", tag, ">");

(Not: Tag'i kapatırken ters bölü değil, düz bölü olması gerekiyor.)

Ama scope'un mantığına iyice uymak için aslında onu eşleştiği kod parçasının hemen altına yazmak en iyisi:

        write(">");
        scope (exit) writeln("</", tag, ">");

Bence en doğrusu o.

Ali

Ek not: i++ yerine her zaman için ++i öneririm. Çünkü i++'nın anlamı çok gereksizce karmaşıktır. Nedenini "Önceki değerli arttırma: ++" başlığında anlatıyorum:

  http://ddili.org/ders/d/aritmetik_islemler.html
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Forum: Ders Arası RSS
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2017-11-20, 01:26:39 (UTC -08:00)