struct MaxMinData
{
PeakData maxMinData;
int hours;
void MaxMinUpdate( double price, SysTime time, TimePrice delegate(SysTime time ) func1, TimePrice delegate(SysTime time ) func2 )
{
maxMinData.Update(price, time);
if ( Config.singleton().IsDurationPassed( maxMinData.max.time, hours.hours + 2.hours ) )
{
maxMinData.max = func1( Config.singleton().loopStartTime - hours.hours );
}
if ( Config.singleton().IsDurationPassed( maxMinData.min.time, hours.hours + 2.hours) )
{
maxMinData.min = func2( Config.singleton().loopStartTime - hours.hours);
}
}
}
struct PriceData
{
MaxMinData[] maxMinData;
void Update( double price, SysTime time )
{
maxMinData.each!( a => a.MaxMinUpdate(price, time, &GetMax, &GetMin) );
}
..
}
İlginç bir şekilde yukardaki fonksiyon parametrelerini bir türlü şablon olarak geçemedim . Yani şunu derleyemedim:
void MaxMinUpdate(Max, Min)( double price, SysTime time, Max func1, Min func2 )
Sebenini biliyormusunuz?
İkinci sorum :
Ali Abi'nin kitabında "http://ddili.org/ders/d.en/lambda.html" bölümünde "Member function pointers" diye bir başlık var ama
auto f = &MyStruct.func; // on a type
auto d = &o.func; // on an object
Eğer ben func fonksiyonunu MyStruct'ın bir instance'dan geçmeye çalışıyorsam (yukardaki gibi) nasıl yapmam gerektiği yok ne yazakki
acaba aşağıdakilerden hangisi doğru ?
auto f2 = this.func;
auto f2 = &this.func;
auto f2 = &func;
auto f2 = func;
Erdemdem
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]