Forum: D Programlama Dili RSS
auto anahtar sözcüğü
acehreli (Moderatör) #1
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ı
Konu adı: auto anahtar sözcüğü
Bu anahtar sözcüğü yanlış anlamışım... :/ Düşündüğüm gibi çalıştığı halde, "sağ tarafın türü" demek değilmiş. D.ershane'yi de düzelteceğim...

Önce biraz tarihçe:

C: Bu sözcük C'de "yerel değişken" gibi bir anlama gelir. Daha doğrusu, "bu işlevden çıkılırken sonlandır"... Ama C'de zaten özel bir şey belirtilmediğinde bir işlevin parametreleri ve yerel değişkenleri yereldir. O yüzden bu sözcük C'de gereksizdir.

C++: C'den aynı şekilde alınmıştır. Aynı şekilde gereksizdir.

C++0x: Sonunda sözcüğün anlamını değiştirmiştir: "ilklemek için kullanılan değerin türü" anlamına gelir:

// C++0x kodu
auto x = 42;     // int
auto y = foo()// foo'nun dönüş türü 

Ali'nin kafasındaki D: C++0x gibi modern bir dil olduğu için, auto'yu C++0x ile aynı anlamda kabul ettim ve üstelik kafamdaki kullanıma da uydu:

// D kodu:
auto x = 42;     // int
auto y = foo()// foo'nun dönüş türü 

D: auto, D'de hâlâ C'deki anlamındaymış. Her ne kadar gereksiz olsa da, türün yazılmadığı yerde tekrar ön plana çıkmış. Çünkü D'de türün otomatik olarak çıkarsanabilmesi, ancak ve ancak bir depolama türü (storage class) belirtildiğinde mümkünmüş.

Depolama türleri şunlar (hepsini denemedim):

StorageClass:
        abstract
        auto
        const
        deprecated
        extern
        final
        immutable
        shared
        nothrow
        override
        pure
        scope
        static
        synchronized

Yani sonuçta, eğer elimizde değişebilen bir değişken varsa, ve türünün otomatik olarak çıkarsanmasını istiyorsak, başka bir depolama türü olmadığı için mecburen auto kullanıyoruz.

Sonuçta aynı çalışıyor, ama olayın temeli başkaymış. :)

Ali
canalpay (Moderatör) #2
Kullanıcı başlığı: Can Alpay Çiftçi
Üye Tem 2009 tarihinden beri · 1133 mesaj · Konum: İzmir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
C'de de auto D2deki gibi kullanılabiliyor mu ?

Yani
auto a= 11;
şeklinde C'de de kullanılabiliyor mu ?

Eğer kullanılamıyorsa ben auto sözcüğünü neden C'de var olduğunu anlayamam. Hele bu kadar gereksiz iken C++'a da konmasını hiç anlayamam.

Dershanedeki yazıyı değiştirirken dikkat edin. Yada hiç değiştirmeyin. Sonuçta anlam olarak aynı işi yapıyor. Önemli olan neden değil sonuçtur :-)

Eğer d.ershanede böyle anlatırsanız muhtemelen okuyan kişi anlayamayacaktır.
acehreli (Moderatör) #3
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ı
canalpay:
C'de de auto D2deki gibi kullanılabiliyor mu ?

Hayır. Belki de en eski C'de anlamı vardı da, C sonradan standartlaşınca bu sözcüğün anlamı kalmadı. Emin değilim. Ama şu anda C'de ve C++'da tamamen boş bir sözcük.

Hele bu kadar gereksiz iken C++'a da konmasını hiç anlayamam.

C++'nın ilk amaçlarından birisi, daha önce yazılmış olan C programlarını bile derleyebilmekti. Ya da, olabildiğince az değişiklikle derleyebilmekti. C++'nın tutunabilmesi için bu çok önemli görülüyordu. Gerçekten de bu felsefe çok işe yaramıştır.

Onun bir etkisi olarak, bütün C anahtar sözcükleri C++'da da vardır.

Önce de dediğim gibi, C++0x'in durumu farklı: bu anahtar sözcüğe benim D2'de aynı sandığım anlamı vermişler: "türünü sen anla" anlamı...

Dershanedeki yazıyı değiştirirken dikkat edin. Yada hiç değiştirmeyin.

Aynı fikirdeyim. Ama bir yandan da sahtecilik yapmış gibi hissediyorum. :) Yine de tek bir cümleyle "doğrusu aslında böyle değildir; şimdilik..." anlamında bir şey eklenebilir.

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:
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-21, 19:44:11 (UTC -08:00)