On Thursday, 5 September 2013 at 16:22:46 UTC, Ali Çehreli wrote:

Compiling with "DMD64 D Compiler v2.064-devel-52cc287" produces the following errors:

* You had byLines in your original code as well. Shouldn't it be byLine?

* You are missing the closing brace of the foreach loop as well.

* "Error: cannot append type char[][] to type string[][]" I have to replace .dup with .idup

Thank you for pointing out the errors, Ali.
I have updated the example.


The following version is lazy:

import std.stdio;
import std.array;
import std.algorithm;

auto readInData(File inputFile, string fieldSeparator)
{
    return
        inputFile
        .byLine
        .map!(line => line
                      .idup
                      .split("\t"));
}

The caller can either use the result lazily:

import std.range;

void main()
{
    auto file = File("deneme.txt");
    writeln(readInData(file, "\t").take(2));
}

Or call .array on the result to consume the range eagerly:

    auto table = readInData(file, "\t").array;

Ali

Thank you for the alternative approaches. This thread is linked from Credits section, if someone wants to find out more on the topic from the wiki.

Reply via email to