www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - How to add elements to dynamic array of dynamic array

reply "katuday" <katuday teknobalangay.ph> writes:
I am very new to D. How do I add elements to a dynamic array of 
dynamic array.

This is my code that fails to compile.

void ex1()
{
	alias the_row = string[];
	alias the_table = the_row[];
	
	File inFile = File("account.txt", "r");
	while (!inFile.eof())
	{
		string row_in = chomp(inFile.readln());
		string[] row_out = split(row_in,"\t");
		the_table ~= row_out; //Error: string[][] is not an lvalue
	}
	writeln(the_table.length); // Error: string[][] is not an 
expression
}
Jun 07 2014
parent reply "bearophile" <bearophileHUGS lycos.com> writes:
katuday:

 I am very new to D.
Welcome to D :-)
 	alias the_row = string[];
 	alias the_table = the_row[];
Here you are defining two types (and in D idiomatically types are written in CamelCase, so TheRow and TheTable).
 	File inFile = File("account.txt", "r");
This is enough: auto inFile = File("account.txt", "r");
 	while (!inFile.eof())
 	{
 		string row_in = chomp(inFile.readln());
This should be better (untested): foreach (rawLine; inFile.byLine) { auto row = rawLine.chomp.idup.split("\t");
 		the_table ~= row_out; //Error: string[][] is not an lvalue
theTable is not a variable, it's a type, so you need to define it like this: string[][] table; Bye, bearophile
Jun 07 2014
parent "katuday" <katuday teknobalangay.ph> writes:
On Saturday, 7 June 2014 at 17:04:36 UTC, bearophile wrote:
 katuday:

 I am very new to D.
Welcome to D :-)
 	alias the_row = string[];
 	alias the_table = the_row[];
Here you are defining two types (and in D idiomatically types are written in CamelCase, so TheRow and TheTable).
 	File inFile = File("account.txt", "r");
This is enough: auto inFile = File("account.txt", "r");
 	while (!inFile.eof())
 	{
 		string row_in = chomp(inFile.readln());
This should be better (untested): foreach (rawLine; inFile.byLine) { auto row = rawLine.chomp.idup.split("\t");
 		the_table ~= row_out; //Error: string[][] is not an lvalue
theTable is not a variable, it's a type, so you need to define it like this: string[][] table; Bye, bearophile
Thank you.
Jun 07 2014