Forum: Ders Arası RSS
Acemi işi koşul sistemi
Sayfa:  önceki  1  2  3  4  sonraki 
acehreli (Moderatör) #16
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ı
Yanıtlanan mesaj ID 6902
VeriTabanı.ara()'nın yaptığının da filter'dan bir farkı yok. :) Daha kısaca:

    int[] ara(Kıstas kıstas)
    {
        return array(filter!kıstas(veriler));
    }

Ali
Avatar
huseyin #17
Üye Haz 2012 tarihinden beri · 363 mesaj · Konum: Ankara
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
evet filterden farkı yok hocam benim sorduğum şu bir de ben string[] olarak veriyi seçtim hep şimdi intlerle işlem yaparken to! ile donuştursem yeterli mi
Huseyin
acehreli (Moderatör) #18
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ı
Yanıtlanan mesaj ID 6901
huseyin325325:
ben hep string ler üzerinde çalıştım veritabanında onu yazarken sonra string e mi çevireyim

Evet, ona uygun olan kıstasın string alması gerekir:

    alias bool delegate(string) Kıstas;

Kullanıcı da uygun kıstas gönderir:

import std.stdio;
import std.conv;
 
struct VeriTabanı
{
    string[] veriler;
 
    void ekle(string veri)
    {
        veriler ~= veri;
    }
 
    alias bool delegate(string) Kıstas;
 
    string[] ara(Kıstas kıstas)
    {
        return array(filter!kıstas(veriler));
    }
}
 
void main()
{
    auto vt = VeriTabanı();
 
    foreach (i; 0 .. 10) {
        vt.ekle(to!string(i));
    }
 
    bool eşit_mi(string arananDeğer)(string veri)
    {
        return veri == arananDeğer;
    }
 
    auto bulunanlar = vt.ara(&eşit_mi!"5");
    assert(bulunanlar == [ "5" ]);
}

Ali
Avatar
huseyin #19
Üye Haz 2012 tarihinden beri · 363 mesaj · Konum: Ankara
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
hmm anladım ama diğer işaretlerde < , > yada <= gibi işte onlarda durum int karşılaştırmaya dönmeyecek mi
Huseyin
Avatar
Salih Dinçer #20
Üye Ock 2012 tarihinden beri · 1912 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Merhaba Hüseyin,

Bir şey rica etsem; yukarıdaki koddan satır satır ne anladığını yazar mısın?

Teşekkürler...
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
Avatar
huseyin #21
Üye Haz 2012 tarihinden beri · 363 mesaj · Konum: Ankara
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Anlamadığım noktayı direkt söylesem daha mantıklı olacak aslında :)
"bool delegate (string) Kıstas" bunu tam olarak anlayamadım
Huseyin
Avatar
huseyin #22
Üye Haz 2012 tarihinden beri · 363 mesaj · Konum: Ankara
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Derslere baktım delegate function yerinde kullanılabilmekte imiş ancak farkı nedir ?
Huseyin
Avatar
Salih Dinçer #23
Üye Ock 2012 tarihinden beri · 1912 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj #21
huseyin325325:
Anlamadığım noktayı direkt söylesem daha mantıklı olacak aslında :)
"bool delegate (string) Kıstas" bunu tam olarak anlayamadım

Bu en basiti, tıpkı C'deki #define karşıtı ve Kıstas yazan yerlere önceki ifade geliyor. Makro yani...

Peki ya, diğer anladığın yerler hakkında bir kaç söz etsen...:)
huseyin325325:
Derslere baktım delegate function yerinde kullanılabilmekte imiş ancak farkı nedir ?
Derslerden baktığında göre bunun bir temsilci demek olduğunu öğrenmiş olmalısın ki kelime anlamı da öyle. Onun yerine function da yazabilirdik. Yani kullanıldığı yere bir işlevi (function) parametre olarak alıyor. Bu da eşit_mi() işlevi oluyor...
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
Bu mesaj Salih Dinçer tarafından değiştirildi; zaman: 2012-07-18, 01:09.
Avatar
huseyin #24
Üye Haz 2012 tarihinden beri · 363 mesaj · Konum: Ankara
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
alias ı  biliyorum benim dediğim delegate derslerde Ali hocam "Temsilci, işlev göstergesine ek olarak o işlev göstergesinin kullandığı kapsamı da barındırır." demiş kapsam derken neyi kastetmiş anlamadım
Huseyin
Kadir Can #25
Üye Haz 2010 tarihinden beri · 413 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
@Hüseyin;
Sanırım fonksiyonla beraber küme parantezleri içindeki kısım(kapsam) da geçiyor, yani yerel değişkenler gibi.
Bu mesaj Kadir Can tarafından değiştirildi; zaman: 2012-07-18, 01:10.
Avatar
huseyin #26
Üye Haz 2012 tarihinden beri · 363 mesaj · Konum: Ankara
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Evet şimdi anladım galiba ben bunları bir yapı içinde toplayıp yazarsam daha da mantıklı olacaktır o zaman
Huseyin
Avatar
huseyin #27
Üye Haz 2012 tarihinden beri · 363 mesaj · Konum: Ankara
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
deneme.d(18): Error: function vt.Data.search (bool delegate(string filename) kıstas) is not callable using argument types (bool function(string dat) pure nothrow @safe)
deneme.d(18): Error: cannot implicitly convert expression (& equal) of type bool function(string dat) pure nothrow @safe to bool delegate(string filename)
Derleme hatalı.

Aldığım hata bu sebebini tam olarak anlayamadım
Sanırım delegate çağrılamıyor function kullanın diyor
function kullandım çalıştı :)
Huseyin
Avatar
huseyin #28
Üye Haz 2012 tarihinden beri · 363 mesaj · Konum: Ankara
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Hepinize teşekkür ederim harika oldu

foreach (i; 0 .. 10) {
        subt["anahtar1"].add(to!string(i));
    }
    auto bulunanlar = subt["anahtar1"].search(&notequal!"5");
    bulunanlar.writeln();

Çıktısı
["0", "1", "2", "3", "4", "6", "7", "8", "9"]
Huseyin
acehreli (Moderatör) #29
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ı
Düşündüm de, eşit_mi() ve notequal()'a karşılaştıracağı değeri şablon parametresi olarak vermek saçma geliyor. Böyle basit kıstaslar için lambda kullanmak daha mantıklı olabilir:

    auto bulunanlar = vt.ara(v => v == "5");

Aldığın hatanın nedenini bilmiyorum. Onunla ilgili olarak ara() işlevini 'pure nothrow @safe' olarak işaretlemeni önerecektim ama filter() kendisi bir 'system' işlevi olduğu için benim örnekte çalışmadı. Neyse; sonra kodlardan bakarım.

Ali
Avatar
huseyin #30
Üye Haz 2012 tarihinden beri · 363 mesaj · Konum: Ankara
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
bence böylesi de iyi oldu başka bir modul açıp şablonları oraya aldım public import ile vt modulune ekledim
benim asıl sormak istediğim şu diyelim bir kullanıcı adı şifre kıyaslamasında donen değerlerin birbirlerine eşlenmiş olduklarını nasıl anlayacağız diyelim benim kullanıcı adım abc sizinki xyz sifrem 123 sizinki 345 baska şifresi aynı olanlarda olabilir bu hatayı nasıl gidereceğiz
Huseyin
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:
Sayfa:  önceki  1  2  3  4  sonraki 
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, 03:04:05 (UTC -08:00)