Cool thing about D, number #72

Bill Baxter dnewsgroup at billbaxter.com
Tue Apr 24 03:14:41 PDT 2007


I've always had this dilemma in C++ when writing graphicsy methods, 
whether a function that takes a point should take separate components 
(float,float,float) or a vector (Vec3f), or perhaps a pointer (float*). 
  In D there's also the option of float[3].  Or just for convenience 
sake maybe overloads for all of the above.

I just realized today the coolness of tupleof for this kind of 
situation.  You can make the function takes the plain floats

    do_something_at_point(float x, float y, float z);

And still call it using a Vec3f via tupleof!

    Vec3f world_origin;
    ...
    do_something_at_point(world_origin.tupleof);

as opposed to

    do_something_at_point(
        world_origin.x,
        world_origin.y,
        world_origin.z);

It's a minor thing, but it rocks.


--bb



More information about the Digitalmars-d mailing list