Forum: D Programlama Dili RSS
"Associative Array" 'de arama yapmak ve pointer kullanimi
kerdemdemir #1
Üye Eyl 2013 tarihinden beri · 109 mesaj · Konum: Danimarka
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: "Associative Array" 'de arama yapmak ve pointer kullanimi
Her ne kadar vazgecilmez olsalar bile saniyorum pointerlari kulanim alanlarini daraltmak, daha guvenli programlama olanaklari sunuyor.

Fakat D dilinin  "Associative Array" sayfasinda https://dlang.org/spec/hash-map.html en basit ornekte point kullanimi goze carpiyor.

int* p;

p = ("hello" in aa);
if (p !is null)
{
    *p = 4;  // update value associated with key
    assert(aa["hello"] == 4);
}

Burda benim kafamda iki soru olusuyor

1 - Bu kadar cok kullaniliacak olan bir operasyonda pointer kullanilmasi dilin guvenligi acisindan uygun mu sizce ?

2 - Acaba "in" keyword u bir tek bu durumlar icin mi tasarlanmis. Bu ozel durum icin bir keyword eklemek acaba biraz fazlami?

Extra soru:
     Associative array hem arama yapip hem degistirme yapmak icin pointer haric bir cozum varmidir.


Acaba sizlerin bu konuda dusunceleri neler?

Erdemdem
acehreli (Moderatör) #2
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4481 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Evet, pointer'lar (gösterge) risklidir ve bu yüzden D'de oldukça az karşılaşılırlar. Neyse ki buradak associative array (eşleme tabloları) kullanımında tek elemanla ilgili olarak gerekiyorlar ve pointer aritmetiği gibi işlemler gerektirmiyorlar.

Burada pointer kullanılmasının nedeni herhalde D'de referansların yalnızca işlev parametrelerinde görülmeleri. Yerel referans oluşturulamadığından veri yapılarında da onun yerine pointer kullanmak gerekiyor.

Belki daha temiz çözümleri olabilirmiş ama D başlangıçta C'ye çok yakın bir dil olarak tasarlandığından böyle durumlarla karşılaşılabiliyor.

Sonuçta, haklısın. :)

in anahtar sözcüğü konusunda da haklısın. Çok sıkıntı doğuran başka bir anahtar sözcük body... O yavaş yavaş dilden çıkartılıyor çünkü kullanıldığı tek yer için başka çözümler getiriliyor.

Ali
kerdemdemir #3
Üye Eyl 2013 tarihinden beri · 109 mesaj · Konum: Danimarka
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
referansların yalnızca işlev parametrelerinde görülmeleri.

Abi ben bunu bilmiyordum biraz arastirayim bu konuyu. Ben referans turlerini her yerde olusturabiliriz diye dusunuyordum.
Bu mesaj kerdemdemir tarafından değiştirildi; zaman: 2017-08-07, 02:02.
acehreli (Moderatör) #4
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4481 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
İşlev dönüş değeri de olabiliyor. Aslında yerel veya üye ref değişken olamıyor demek daha doğru galiba.

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-09-26, 07:42:16 (UTC -07:00)