Jump to page: 1 24  
Page
Thread overview
September 06, 2009

Biliyorsunuz D'yi yeni öğrendiğim için ve hiç düşük seviyeli dillerle çalışmadığım için çok soru soruyorum. Ve bu genelde belli bir başlık altında gitmediğinden çözümü unuttuğumda takip etmekte zorlanıyorum. Bu yüzden böyle bir başlık açmayı uygun gördüm.

İlk sorum. Digitalmars sitesinde böyle bir şey var.
char[] a = "abc";
auto b = to!(immutable(dchar)[])(a);
assert(b == "abc"w);

Buradaki auto b'nin hangi tür olacağını kendi mi seçiyor. Tam olarak ne işe yarıyor merak ettim. Eğer bu işe yarıyorsa bunu kullanmanın avantajı dezavantajı nelerdir. Birde eğer bu işe yaramıyorsa ne işe yarıyor.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

September 06, 2009

Evet, auto tamamen gereksiz olarak yazılan tür isimlerini engelliyor. auto, C++'nın yeni standardında da gelecek.

Örneğin eğer foo isminde bir fonksiyon OzelBirTur isminde bir tür döndürüyorsa, ve bu tür bir nesneyi ilklerken kullanılıyorsa, C'de ve C++'da tür ismi gereksiz olarak sol tarafa da yazılır. Hele sağ tarafta new kullanılıyorsa, new'e de türün ismi verilmek zorunda olduğundan, bu iyice gereksiz ve şaçma olur. Hele bir de o tür bir şablonsa: (bu örnekler C++)

   OzelBirTur<double> nesne = foo<double>();
   OzelBirTur<BenimGuzelTurum> * p = new OzelBirTur<BenimGuzelTurum>(/* ... */);

oysa kısaca:

   auto nesne = foo<double>();
   auto * p = new OzelBirTur<BenimGuzelTurum>(/* ... */);

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

September 07, 2009

auto anlaşılan sağda yazılmış olan türü soldayeniden yazmamıza engel oluyor. Otomatik kendi yazıyor.

Bende

char[] alfabe= "abc";

yerine

auto alfabe="abc";

şeklinde yazabileceğimizi düşünmüştüm.
hatta

int sayma_sayılar = 1,2,3,4,5,6,7,8,9 ;

yerine

auto sayma_sayılar= 1,2,3,4,5,6,7,8,9 ;

Şeklinde kullanabiliriz diye düşünmüştüm.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

September 07, 2009

Alıntı (acehreli):

>

alfabe çalışır ve türü immutable char[] olur (takma ismi de string). sayma_sayılar'da tabii köşeli parantezler eksik; koyulursa o da olur.

Bu genel türden daha iyi bir şey. Yani php gibi yüksek seviyeli bir dil oluyor. Neredeyse tür tanımlamamıza bile gerek yok. O zaman türü sadece kesin olarak o tür olması için tanımlarız. Belki biraz da hızda yavaşlama olur. Ama onuda zaten hissedemeyiz.

Ayrıca genel türde sorduğum "girişte hem int hemde dchar türünden değer bekliyorsak ne yapmamız gerekiyor" sorusunu bu şekilde de çözebiliriz.

Tabii neden hep auto kullanılmadığının bir sebebi olmalı. Harelde tür güvenliği için. Yoksa başka bir sebep mi var ?

birde

auto alfabe="abc";

Bunun hangi türden olduğunu nasıl öğrenebiliriz.

auto alfabe="abc";
writeln(alfabe.stringof);

şeklinde tür adını öğrenemiyoruz sanırım. Denediğimde değişken adını verdi. Derslerde türün ismini döndürür diyor ama türün değil değişkenin ismini döndürüyor. Bu ufacık kodda yanlışımı bulamadım :-D

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

September 07, 2009

Alıntı:

>
> writeln(typeof(alfabe).stringof);
> ```

>

O zaman derste bu türün adını verilir denmemesi gerekmez mi ? stringof burada anladığım kadarıyla başka bir işe yarıyor.

-- 
[ Bu gönderi, <http://ddili.org/forum>'dan dönüştürülmüştür. ]
September 07, 2009

alfabe çalışır ve türü 'immutable char[]' olur (takma ismi de 'string'). sayma_sayılar'da tabii köşeli parantezler eksik; koyulursa o da olur.

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

September 07, 2009

php'de değişken türü programın çalışması sırasında belirlenir; bu gibi diller "dynamically typed"tır. C ailesinden diller ise türü derleme zamanında bilmekte ısrar ederler: "statically typed." php'de uymayan tür geldiğinde program göçebilir, D'de ise kod derlenemez.

Şu çalıştı:

writeln(typeof(alfabe).stringof);

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

September 07, 2009

stringof'u şimdiye kadar hep tür niteliği olarak gösterdiğim için, o kullanımlarda "türün ismi" o kadar da yanlış olmamış.

Asıl, "bir şeyin insanlar için okunaklı olan yazımı" demem gerekirmiş.

Teşekkürler; daha açıklayıcı yapıyorum.

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

September 07, 2009

Veya tam anlamıyla "string'e dönüşmüş hâli"...

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

September 08, 2009

Alıntı (canalpay):

>

Burada her şey normal ama assertte toupperT("ii") yerine toupperT('ii') yazınca hata veriyor ? Neden acaba ? " ile ' farkı nedir ki ? Yüksek seviyeli dillerde şimdiye kadar hiç farkını göremedim. Tek ' kullandığında metinin içinde ' işaretini yalın olarak kullanamayacağın için " kullanılırdı. Ya da tam zıttı. Ama d bunlara farklı görevler yüklemiş.

Tek tırnaklar(' ') karakterler için kullanılır. Çift tırnaklar(" ") ise dizgiler için kullanılır. toupperT("ii") iki tane 'i' karakterinden meydana geldiği için artık bir dizgidir o yüzden tek tırnak kullanamaya izin vermez. toupperT('i') şeklnde olmalı.

D.ershane'nin Karakterler veya Dizgiler konularının birine bu fark eklenebilir.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

« First   ‹ Prev
1 2 3 4