D - temlates, toApply question?
- Ivan Senji (57/57) Feb 04 2004 D templates are realy OK but they are very badly documented and it is re...
D templates are realy OK but they are very badly documented and it is realy
hard for
a D-beginner to figure out how the work! There should be a couple of
meaningful examples
in the documentation!
I have a problem understanding a  part of code i have writen.
It is set class template and it basicaly looks like this:
class set(SetType)
{
     public this() {}
     public this(in set a)
     {
          foreach(SetType elem; a)
          {
               this.insert(elem);
          }
     }
     public this(in SetType[] array)
     {
          for(int i=0; i<array.length; i++)
          this.insert(array[i]);
     }
     public bool insert(in SetType a)
     {
          if(!(a in val)) {val[a]=1;}
          return true;
     }
//...some operators for comarison, union, intersction...
    private int[SetType] val;
//i figured out that i neaded to write opApply to be able to iterate class
set with foreach
     int opApply(int delegate(inout SetType) dg)
    {
          int result;
          foreach(SetType st; skup.keys)
          {
               result = dg(st);
               if(result)
                break;
          }
        return result;
    }
}
the opApply function i wrote works good but i wrote it by trying for some
time
and i don't understand what should this function do, what does delegate dg
do,
and how does foreach use this opApply function?
One more question: how could i add to the class a member template function
that would receive a set class instance instantiated with another type?
I tried this in my class:
template Func(T)
{
    static void Func(set!(T) a) {}
}
but it doesn work?
Thanks for answering my questions!:)
 Feb 04 2004








 
  
  
  "Ivan Senji" <ivan.senji public.srce.hr>
 "Ivan Senji" <ivan.senji public.srce.hr>