Multiple return values...

Simen Kjærås simen.kjaras at gmail.com
Wed Mar 14 13:00:07 PDT 2012


On Wed, 14 Mar 2012 20:02:50 +0100, Ary Manzana <ary at esperanto.org.ar>  
wrote:

> Here's what you can do in Ruby:
>
> a = 1
> b = 2
>
> # Swap the contents
> a, b = b, a
>
> Can you do something like that with templates in D, with a nice syntax?

template to(T...) {
     alias T to;
}

auto from(T...)(T t) {
     struct Result { T t; alias t this; }
     return Result( t );
}

void main( ) {
     int a = 3;
     int b = 4;

     to!(a, b) = from(b, a);

     assert( a == 4 );
     assert( b == 3 );
}


More information about the Digitalmars-d mailing list