How is the D programming language financed?

Caligo iteronvexor at gmail.com
Thu Dec 23 16:11:35 PST 2010


I hope I didn't miss anything; I copied it from the book.

import std.stdio, std.exception;

interface Stat{
    void accumulate(double x);
    void postprocess();
    double result();
}

class Min : Stat{
    private double min = double.max;
    void accumulate(double x){
        if( x < min ){
        min = x;
        }
    }

    void postprocess(){ }
    double result(){
        return min;
    }
}

void main(string[] args){

     Stat[] stats;
     foreach(arg; args[1 .. $]){
               auto newStat = cast(Stat) Object.factory("stats." ~ arg);
          enforce(newStat, "Invalid statistics function: " ~ arg);
          stats ~= newStat;
      }
      for(double x; stdin.readf(" %s ", &x) == 1; ){
               foreach(s; stats){
                 s.accumulate(x);
        }
       }
      foreach(s; stats){
               s.postprocess();
         writeln(s.result());
      }
}


On Thu, Dec 23, 2010 at 6:04 PM, Andrei Alexandrescu <
SeeWebsiteForEmail at erdani.org> wrote:

> On 12/23/10 5:50 PM, Caligo wrote:
>
>>
>>
>> On Thu, Dec 23, 2010 at 5:38 PM, Andrej Mitrovic
>> <andrej.mitrovich at gmail.com <mailto:andrej.mitrovich at gmail.com>> wrote:
>>
>>    On 12/24/10, Caligo <iteronvexor at gmail.com
>>    <mailto:iteronvexor at gmail.com>> wrote:
>>     > You got me excited, so I decided to give GDC another try.  I
>>    cloned the
>>     > repo, and using GCC 4.4.5, it compiled without errors.
>>     > I started following the examples in TDPL, but the Stat program on
>>    page 22
>>     > gives the following errors:
>>     >
>>     > t1.d:33: Error: void has no value
>>     > t1.d:33: Error: incompatible types for ((readf(" %s ",& x)) ==
>>    (1)): 'void'
>>     > and 'int'
>>     >
>>     > is there a typo in the code, or is this some kind of bug in GDC?
>>
>>    Use stdin.readf:
>>
>>    import std.exception, std.stdio;
>>    void main(string[] args) {
>>      for (double x; stdin.readf(" %s ", &x) == 1; ) {
>>      }
>>    }
>>
>>    The TDPL errata is here btw, that bug is listed:
>>    http://erdani.com/tdpl/errata/index.php?title=Main_Page
>>
>>
>>
>> great, that fixed the problem.  I was actually trying to find the errata
>>
>> too, so thanks for that.
>>
>> The example compiles but it throws an exception:
>>
>>  >> echo 3 4 6.6 7.7 33.4 | ./t1 Min Max Average
>> object.Exception at 3030object.Exception@30
>>
>
> Would you mind posting the entire code? Thanks.
>
> Andrei
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puremagic.com/pipermail/digitalmars-d/attachments/20101223/9ea1b92e/attachment-0001.html>


More information about the Digitalmars-d mailing list