Tuples citizenship
Jonathan M Davis
jmdavisProg at gmx.com
Fri Mar 2 01:39:00 PST 2012
On Friday, March 02, 2012 09:31:14 kennytm wrote:
> Jonathan M Davis <jmdavisProg at gmx.com> wrote:
> > That's assuming that you're passing all of the pieces of the tuple to the
> > function. Often, that's not the case at all. Take the findSplit trio, for
> > instance. What are the odds that you're going to want to pass all of the
> > elements in the tuples that any of the return to another function? About
> > zero, I'd say. It's _much_ more likely that you're going to want to take
> > the results and then pass _one_ of them to another function. So, as it
> > stands, chaining with those functions just doesn't work unless you only
> > care about one of the results in the tuple.
> >
> > - Jonathan M Davis
>
> How does 'out' make chaining any easier? Suppose we have a `R3
> findSplit2(R1, R2, out R4, out R5)`, how to chain if we want to pass the R4
> to another function?
>
> R5 ignored;
> R4 theRange;
> findSplit2(haystack, needle, theRange, ignored);
> return doSomething(theRange);
>
> vs
>
> return doSomething(findSplit(haystack, needle)[1]);
True, you can't chain using the out parameters, but you _can_ chain using the
return value, whereas if you have a tuple, you can't chain _at all_ unless you
actually need all of the returned values (either as a tuple or expanded) or if
you only need _one_ of the returned values, in which case you can use the
subscript operator. So, you can definitely chain better without a tuple than
with.
- Jonathan M Davis
More information about the Digitalmars-d
mailing list