Forum: D Programlama Dili RSS
Eşleme tablosu kullanirken std algoritma fonksiyonları çağırmak
kerdemdemir #1
Üye Eyl 2013 tarihinden beri · 150 mesaj · Konum: Danimarka
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: Eşleme tablosu kullanirken std algoritma fonksiyonları çağırmak
Aşağıdaki gibi bir problemim vardı

//DMD64 D Compiler 2.072.2
 
import std.stdio;
import std.algorithm;
import std.range;
import std.typecons;
import std.conv;
 
enum Aile
{
    Baba = "Erdem",
    Anne = "Nat",
    Tatli = "Ela"
}
 
void main()
{
    double[Aile] aileMap = [Aile.Baba: 1, Aile.Anne : 2, Aile.Tatli : 3]; 
    Aile[] aileList = [ Aile.Baba, Aile.Anne ];
    
    double[Aile] filteredList = aileMap.byKeyValue().filter!( a => aileList.canFind(a.key) ).
                                        map!( a => tuple(cast(Aile)a.key, a.value) ).assocArray;   
    
    writeln(filteredList);
}

Bir diziye göre elimdeki bir eşleme tablosu filtrelemem gerekiyordu. Bir satırla çıktım işinden kod güzel gözüküyor. Ama düşününce performance açısından baya işlem gerektiriyor. Yine tek satırda daha efektif olarak çıkabilirmiydim bu işin içinden?

Erdemdem
Bu mesaj 2 defa değişti; son değiştiren: kerdemdemir; zaman: 2018-01-11, 02:08.
acehreli (Moderatör) #2
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4581 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
(Zamanında Türkçe karşılık olarak "eşleme tablosu"nu seçmiştik.)

Sondaki assocArray dışında pahalı işlem göremiyorum çünkü bütün işlemleri istiyorsun zaten. Eğer sonrası için eşleme tablosu olarak tutmak gerekmiyorsa belki assocArray()'i kaldırıp sonucu doğrudan kullanabilirsin.

Ali
kerdemdemir #3
Üye Eyl 2013 tarihinden beri · 150 mesaj · Konum: Danimarka
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Abi ben foruma biraz geç katıldığım için Türkçe terimleri pek bilmiyorum düzelticem öğrendikce.

İyi gönül rahatlığıyla kullanıyım performans açısından sorun yoksa.

Erdem
acehreli (Moderatör) #4
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4581 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Hiç sorun değil. Ben de arama sonuçlarında görünsün diye "eşleme tablosu"nu eklemiştim. :)

Ayrıca, terimlerin hepsinin iyi olduklarını da savunmuyorum. Seçtik bitti. :)

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: 2018-01-16, 13:26:00 (UTC -08:00)