On Thu, May 08, 2014 at 02:50:54PM +0000, bearophile via Digitalmars-d-learn wrote: > H. S. Teoh: > > >FWIW, for very long function signatures I write it this way: > > > > const(T)[] myVeryLongFunction(T)(const(T)[] arr, > > int x, > > int y, > > int z, > > ExtraArgs extraArgs) > > pure @safe nothrow > > if (is(T : int) && > > someOtherLongCriteria!T && > > yetMoreVeryLongCriteria!T) > > { > > ... > > } > > You also need the pre&post-conditions :-) [...]
I actually had them in my first draft. :) const(T)[] myVeryLongFunction(T)(const(T)[] arr, int x, int y, int z, ExtraArgs extraArgs) pure @safe nothrow if (is(T : int) && someOtherLongCriteria!T && yetMoreVeryLongCriteria!T) in { assert(x >= 0 && x < 5); assert(y >= 0 && y < 5); assert(z >= 0 && z < 5); } out(result) { assert(result[0] >= 0 && result[0] < 5); assert(result[1] >= 1 && result[1] < 6); assert(result[2] >= 2 && result[2] < 7); } body { ... } There. :) T -- You are only young once, but you can stay immature indefinitely. -- azephrahel