On Tuesday, 29 April 2014 at 09:23:03 UTC, FrankLike wrote:
Hi,erveryone,

type Tuple!(int,int,int,string)  can write[],but can't read[];

module main;
import std.stdio,std.typecons,std.conv;

void main(string[] argv)
{
            alias Tuple!(int,int,string) tuple2;
        alias Tuple!(int,int,string)[10] tupleS2;

        void bbx(tupleS2 x)
        {
                foreach(v;x)
                {
        

                writeln(v);
                        foreach(k;v)
                         writeln(k);
                }
        }
        tupleS2 xy2;

        foreach(i,v;xy2)
        

{
                xy2[i] = tuple2(1,-1,"xy2 :"~i.to!string);
        }
        xy2[1][0]=100;  // can write
        bbx(xy2);


        
        for(int i=0;i<3;i++)
        {
        

        writeln(xy2[0][i]); //  can't read
        }
        
   }
-------------------code end----------------------

if use the  'for(int i=0;i<3;i++)' ,then error.

Error: no [] operator overload for type Tuple!(int, int, int,
int, int, int, int, int, int, int, int, string)         

Thank you.

Frank

Tuple indexes must be compile-time values. This will work:


import std.stdio, std.typecons, std.conv, std.typetuple;

void main()
{
        alias Tuple!(int, int, string) tuple2;
        alias Tuple!(int, int, string)[10] tupleS2;

        void bbx(tupleS2 x)
        {
                foreach(v; x)
                {
                        writeln(v);
                        foreach(k;v)
                                writeln(k);
                }
        }
        tupleS2 xy2;

        foreach(i, v; xy2)
        {
                xy2[i] = tuple2(1, -1, "xy2 :" ~ i.to!string);
        }
        xy2[1][0]=100;
        bbx(xy2);
        
        foreach(i; TypeTuple!(0,1,2))
        {
                writeln(xy2[0][i]);
        }
}

Reply via email to