tuple can write [],but can't read []
John Colvin via Digitalmars-d
digitalmars-d at puremagic.com
Tue Apr 29 02:53:28 PDT 2014
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]);
}
}
More information about the Digitalmars-d
mailing list