On Saturday, 11 August 2012 at 14:45:28 UTC, Andrew wrote:
On Fri, 10 Aug 2012 03:44:11 +0200, Jesse Phillips wrote:

On Friday, 10 August 2012 at 01:39:32 UTC, Andrew wrote:
I'm trying to read in a csv file. The examples in the docs for std.csv
all assume you're reading from a string rather than a file.

It requires a range of dchar. I believe there is an undocumented
function to get a dchar range out of a File, but as it is
undocumented...

std.file.readText() will be your friend.

This works perfectly, and thank you. I've since run into something peculiar. Here's my csv loader. It stuffs a csv file into an associative array containing structs of an arbitrary type, so long as the struct defines csvid(), which is needed to tell it what to use as the array key:

T[string] loadcsvtable(T)(string filename)
{
        string input = readText(filename);
        auto records = csvReader!T(input, null);
        T[string] table;

        foreach(record; records)
                table[record.csvid] = record;  <---NOTE record.csvid
        return table;
}

Only I forgot the parenthesis on csvid()...and it still works. And I
can't figure out why. I know you can do this sort of thing with
@property, but the method definition doesn't have @property set.

I'm not precisely complaining, but something's going on here I don't
understand.

Without the -property switch, you can use non-@property functions as if they were @property. This is supposed to eventually be deprecated, so I try to not do this.

Reply via email to