Tuples

Daniel Keep daniel.keep.lists at gmail.com
Fri Feb 6 17:19:14 PST 2009



BCS wrote:
> Reply to dsimcha,
> 
>> I've been thinking a little about the idea of returning tuples from
>> functions, w.r.t. Bugzilla 2628
>> (http://d.puremagic.com/issues/show_bug.cgi?id=2628).   Would it be
>> feasible to solve this by making struct[index] for any struct w/o an
>> opIndex overload equivalent to struct.tupleof[index]?  This would be
>> trivial syntactic sugar, but would allow user-defined tuples in Phobos
>> to look like a builtin tuple, be returned from functions, etc., while
>> changing very little under the hood.   Furthermore, for functions that
>> take a tuple, we could allow structs to be implicitly cast to tuples,
>> e.g.:
>>
>> struct Foo {
>> uint u;
>> float f;
>> }
>> void doStuff(uint myInt, float myFloat) {}
>>
>> Foo foo;
>> doStuff(foo);  // Implicitly casts to foo.tupleof, works.
> 
> I like the first part some (but not without reservations). As for the
> second bit... I don't like it. It would make overload resolution to
> tricky, if not at the compiler level than at the eyeball level.

I personally believe this is all getting a bit too silly; it's all this
work to get around that you can't return tuples from a function.  I
think it'd be a better idea to just make it so we can return value
tuples from functions, period.

Of course, I also want automatic unpacking and to re-purpose that silly
comma operator, but that can wait.  :)

As for the second, I just use this:

Foo foo;
doStuff(foo.tupleof);

Note: it's been a while, and I might have used a special .tuple member;
can't remember.

  -- Daniel



More information about the Digitalmars-d mailing list