Voldemort command structures
Brad Anderson
eco at gnuk.net
Sun Apr 22 11:42:08 PDT 2012
On Sun, Apr 22, 2012 at 4:24 AM, Gor Gyolchanyan <
gor.f.gyolchanyan at gmail.com> wrote:
> Voldemort types (coined by Andrei Alexandrescu) are types, which can't
> be named. Like so:
>
> auto getMisteriousData(int i)
> {
> struct Mysterious
> {
> int i;
> }
>
> return Mysterious(i);
> }
>
> The only way to use mysterious structure is to either do this:
>
> auto m = getMysteriousData(12);
>
> or
>
> ReturnTypeOf!getMysteriousData m;
>
> Here's a very handsome use case of this setup:
>
> class Set(T)
> {
> public:
> auto opIndex(T datum_)
> {
> struct Command
> {
> public:
> alias _datum this;
>
> bool contains() @property
> {
> return (_datum in _set) !is null;
> }
>
> void add()
> {
> _set._data[_datum] = false;
> }
>
> void remove()
> {
> _set._data.remove(_datum);
> }
>
> private:
> Set _set;
> T _datum;
> }
> }
>
> private:
> bool[T] _data;
> }
>
> this will allow you do use Set class like this:
>
> auto s = new Set!int;
> assert(!s[6].contains);
> s[6].add();
> assert(s[6].contains);
> s[6].remove();
> assert(!s[6].contains);
>
> This will get even better if the voldemort Command structure, returned
> by opIndex would include the same pattern, allowing to chain the
> parameters and actions in any way desirable.
>
> --
> Bye,
> Gor Gyolchanyan.
>
That's really neat. We need to start making a catalog of interesting stuff
you can do in D.
Regards,
Brad Anderson
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puremagic.com/pipermail/digitalmars-d/attachments/20120422/fcdd29ec/attachment.html>
More information about the Digitalmars-d
mailing list