Hello !

I am trying to work out "The D programming Language" chapter 1.6 problem on Interfaces and Classes.

folder
./stats.d (takes argument "Min/Max" on command line and loads them)
./ss/Stat.d  (defines interface named 'Stat')
./ss/Min.d   (defines class named 'Min' that implements Stat)

$ dmd -lib -g ss/*.d -of=ss.a
$ dmd -g stats.d ss.a
$ echo 3 5 1.3 4 10 4.5 1 5 | stats Min
object.Exception@stats.d(19): Invalid statistics function: Min

Code for stats.d -

import std.exception, std.stdio;
import ss.Stat;  // works !!

void main(string[] args){
        Stat[] stats;

        foreach (arg; args[1 .. $]) {

                // Doesn't work
                // string path = "stats." ~ arg ~ "." ~ arg;
                // string path = "stats." ~ arg;
                // string path = "stats.ss." ~ arg;
                // string path = "stats.ss." ~ arg ~ "." ~ arg;
                // string path = "ss." ~ arg;
                // string path = "ss." ~ arg ~ "." ~ arg;
                // string path = arg ~ "." ~ arg;
                // string path = arg;
                // string path = "stats.ss." ~ arg ~ "." ~ arg;

                 string path = arg;

                auto newStat = cast(Stat) Object.factory(path);
                enforce(newStat, "Invalid statistics function: " ~ path);
                stats ~= newStat;
        }
}

What is the path for Min class defined in Min.d inside ./ss folder that is compiled into ss.a ?

Thanks
Aditya

Reply via email to