indexing tuples using strings
BCS
ao at pathlink.com
Mon Dec 1 14:49:24 PST 2008
Reply to Jason,
> Bill Baxter Wrote:
>
>> On Tue, Dec 2, 2008 at 6:40 AM, Jarrett Billingsley
>> <jarrett.billingsley at gmail.com> wrote:
>>
>>> On Mon, Dec 1, 2008 at 4:19 PM, llee <larry at workingwondersus.com>
>>> wrote:
>>>
>>>> Is is possible to index the elements within a tuple using strings?
>>>> Something similar to the way that associative arrays allow elements
>>>> to be indexed using strings.
>>>>
>>> No, because that makes no sense.
>>>
>>> What does tuple["string"] mean, anyway?
>>>
>> Tuples have an annoying "auto-flattening" behavior which means that
>> it's difficult to create very advanced data structures out of them.
>> But you can create a flat tuple a-list with entries like "fred",
>> int, "barney", double, "wilma", ireal
>> Then you can write some template functions that will scan through the
>> list for a particular string and return the following type if there's
>> a match. You will need to use lots of recursive template-fu.
>> --bb
>>
> ... Or you can just loop over the tuple and return the matching
> index... No recursive template-foo needed
>
you can't loop over a template outside of a function.
OTOH:
template IndexOf(char[] str, Strs...)
{
const int IndexOf = typeof(
*{
foreach(int i, char[] s; Strs)
{
static char[i] r;
static if(Strs[i] == str)
return &r;
}
}()).length;
}
import std.stdio;
void main()
{
writef("%d\n", IndexOf!("hello", "go", "say", "hello", "to", "bob"));
}
But Gahh!!!
More information about the Digitalmars-d
mailing list