June 12, 2004 InterfaceTemplates | ||||
|---|---|---|---|---|
| ||||
It wasn't mentioned in the docs, but I had a slight inkling that it might be the case that one could have InterfaceTemplates using the same syntax as ClassTemplates (ie class ClassName(T) : [superclass [, interfaces] <classbody>). The following example compiled and ran correctly, outputting "1\n4\n" as expected. Perhaps this warrants a mention in the documentation under Templates, alongside "Class Templates"?
// begin test.d
interface Foo(T)
{
int aFunction(T anArgument);
}
class Bar(T) : Foo!(T)
{
int aFunction(T anArgument)
{
return anArgument.size;
}
}
int main(char[][] args)
{
Bar!(ubyte) one = new Bar!(ubyte);
Bar!(int) two = new Bar!(int);
ubyte oneVar = 16;
int twoVar = 400000;
printf("%i\n%i\n", one.aFunction(oneVar), two.aFunction(twoVar));
return 0;
}
// end test.d
| ||||
June 12, 2004 Re: InterfaceTemplates | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Sigbjørn Lund Olsen | Nice. [btw, and please tell me to shove it if this seems rude, but I'm fascinated at the pronunciation of your name. Any chance you could give me a little phonetic pronunciation? :-) (I'm one of the few residents of Australia that goes crazy when the newsreaders mispronounce "foreign" names; the BBC it ain't!!) ] "Sigbjørn Lund Olsen" <sigbjorn@lundolsen.net> wrote in message news:caffuc$2vtp$1@digitaldaemon.com... > It wasn't mentioned in the docs, but I had a slight inkling that it > might be the case that one could have InterfaceTemplates using the same > syntax as ClassTemplates (ie class ClassName(T) : [superclass [, > interfaces] <classbody>). The following example compiled and ran > correctly, outputting "1\n4\n" as expected. Perhaps this warrants a > mention in the documentation under Templates, alongside "Class Templates"? > > > > // begin test.d > > interface Foo(T) > { > int aFunction(T anArgument); > } > > class Bar(T) : Foo!(T) > { > int aFunction(T anArgument) > { > return anArgument.size; > } > } > > int main(char[][] args) > { > Bar!(ubyte) one = new Bar!(ubyte); > Bar!(int) two = new Bar!(int); > > ubyte oneVar = 16; > int twoVar = 400000; > > printf("%i\n%i\n", one.aFunction(oneVar), two.aFunction(twoVar)); > > return 0; > } > > // end test.d | |||
Copyright © 1999-2021 by the D Language Foundation
Permalink
Reply