This needs a different approach

Gide Nwawudu gide at btinternet.com
Wed Apr 30 06:46:29 PDT 2008


On Tue, 29 Apr 2008 23:38:52 +0200, "Saaa" <empty at needmail.com> wrote:

>
>> >
>>> IFruit[] fruits = [APPLE, PLUM, APPLE ... PEAR, PLUM];
>>>
>>> Since all fruits inherit from IFruit, they can all be represented as 
>>> IFruit references.  So, if you have an array of IFruit, you can put all 
>>> different kinds of fruits in it.
>>
>> Calling 'fruit[2].eat();' would call eat() from that specific APPLE, 
>> right?
>
>Changing fruit[2] to PLUM would go how?

Just assign as normal, fruits[2] = PLUM.

[CODE]
import std.stdio;

interface IFruit
{
     void eat();
}

IFruit APPLE;
IFruit PEAR;
IFruit PLUM;

static this()
{
     APPLE = new class() IFruit {
         void eat() {
             writefln("Eat APPLE");
         }
     };

     PEAR = new class() IFruit {
         void eat() {
             writefln("Eat PEAR");
         }
     };

     PLUM = new class() IFruit {
         void eat() {
             writefln("Eat PLUM");
         }
     };
} 


int main(string[] args) {

	IFruit[] fruits = [APPLE, PEAR, APPLE, APPLE, PEAR, PLUM];
	
	writefln("Fruits");
	foreach( f; fruits) {
		f.eat();
	}
	
	writefln("\nNew Fruits");
	fruits[2] = PLUM;
	foreach( f; fruits) {
		f.eat();
	}
	
	return 0;
}

[/CODE]

Gide


More information about the Digitalmars-d-learn mailing list