Forum: Ders Arası RSS
foreach hakkında
foreach elemanı için tür tanımı
zafer #1
Üye Tem 2009 tarihinden beri · 700 mesaj · Konum: Ankara
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: foreach hakkında
    import std.file;
 
    foreach (string dosya; dirEntries("E:\\ZipTest", SpanMode.depth)) 
    { 
        writeln(dosya); 
    }

Merhaba,
Yukarıdaki kod içerisinde dosya değişkeninin tipini "string" olarak tanımlamadığımız zaman hata alıyorum. Daha önce kullandığım foreach döngülerinde böyle bir tanımlama yapmamıştım ve çalışmıştı. Şimdi neden dosya değişkeninin tanımlanması için beni zorluyor anlamadım ?
https://github.com/zafer06 - depo
Bu mesaj zafer tarafından değiştirildi; zaman: 2011-09-28, 06:45.
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ı
Bunun nedeni, dirEntries()'in (aslında onun döndürmüş olduğu DirIterator türünün) birden fazla opApply() yüklemesinin bulunması:

  http://www.d-programming-language.org/phobos/std_file.html…

string döndüren yükleme yalnızca klasördeki nesnelerin isimlerini verir. DirEntry yükleme ise klasördeki nesne hakkında daha ayrıntılı bilgi verir. Bu yüklemelerden hangisini istediğimizi bu durumda seçmek zorunda kalıyoruz.

Bazı durumlarda ise açıkça seçmemiz gerekmez. Örneğin eşleme tablolarının da opApply() yüklemeleri vardır ama hangisini istediğimiz değişken adedinden anlaşıldığı için türleri yazmak gerekmez:

import std.stdio;
 
void main()
{
    int[string] tablo = [ "üç" : 3, "dört" : 4 ];
 
    // Tek değişkenli opApply()'ı kullanır
    foreach (değer; tablo) {
        writeln(değer);
    }
 
    // İki değişkenli opApply()'ı kullanır
    foreach (indeks, değer; tablo) {
        writefln("%s => %s", indeks, değer);
    }
}

DirIterator'ın yüklemelerinin ikisi de tek değişkenli olduklarından seçmek gerekiyor.

Yapı ve sınıfları foreach'e uyduran opApply() bana bayağı karışık gelmişti. Şurada 'foreach desteğini opApply işlevleri ile sağlamak' başlığı altında var:

  http://ddili.org/ders/d/foreach_opapply.html

O bölümün 2 numaralı problemi de aynen dirEntries()'deki gibi tek değişkenli iki opApply() yüklemesi sunar.

Ali
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-22, 07:02:10 (UTC -08:00)