A tutorial on D templates: updates
bls
bizprac at orange.fr
Mon Jan 30 04:07:48 PST 2012
On 01/29/2012 12:44 PM, Philippe Sigaud wrote:
> Hello,
>
> I posted there a few weeks ago about a tutorial on D templates I put in github:
>
> https://github.com/PhilippeSigaud/D-templates-tutorial/blob/master/dtemplates.pdf
>
> Since then, I received numerous mails, issues, advices and thanks. Thank to you all!
>
> Following the ideas found in TDPL, I wrote a D script to extract and test all the samples
> presented in the document. I'm proud to say that right now, all named (module XXX;) samples
> compile, which makes for more than 200 modules tested! Indeed, you could see the entire document
> as a huge package documentation :)
>
> I also added explanations, new sections and a new appendix in D templates resources.
>
> As before, do not hesitate to read, comment, post and even send pull requests, I'm all ears.
>
> Bye,
>
> Philippe
First of all thank you so much for this wonderful book!
I would like to ask for a little enhancement regarding mixin templates.
see snippet.
The second mixin template "RandomAccessList" is slightly OT 'cause
Ranges are also touched, but I think this could be very interesting stuff.
A third mixin template example which comes in mind is the Publisher
subscriber pattern template.
snip.
import std.stdio;
import std.cstream;
void main(string[] args)
{
// showing mixin template scope.
auto bar = new Bar();
writeln(bar.onClick());
din.getc();
}
mixin template FooMixin()
{
void init()
{
}
string onClick()
{
return "Clicked";
}
}
class Foo
{
mixin FooMixin;
}
class Bar : Foo
{
}
// Something more interesting : Mixin templates and ranges
mixin template RandomAccessList()
{
alias typeof(this) Me;
//Either
static private Me[] MeArray;
//OR
private Me next, prev;
}
interface IRandomAccessRange {}
class Contacts : IRandomAccessRange // Contacts not Contact !
{
mixin RandomAccessList;
}
More information about the Digitalmars-d-announce
mailing list