Ohhhh, real intresting the mode functional style!!!
Like linq!
hahah

Btw, it's work very well, thansk!!!
But, how I can insert an ',' comma to separe the decimal place ? ( the last 2 digits )
I can't find a "insert" instruction in std.string or std.array

On Thursday, 10 July 2014 at 15:01:52 UTC, bearophile wrote:
Alexandre:

I want to know if have a more better way to make this... maybe using lambda or tamplates....

Your code is not bad. This is a bit better (untested):


void main() {
    import std.stdio;
    import std.conv: to;

    auto lines = "oi.txt".File.byLine;

    int tot = 0;
    foreach (const line; lines) {
        if (line[0] == '1')
            tot += line[253 .. 266].to!int;
    }

    tot.writeln;
}


If you want to write in a mode functional style (untested) (probably it requires the 2.066beta):

void main() {
    import std.stdio, std.algorithm, std.range, std.conv;

    "oi.txt"
    .File
    .byLine
    .filter!(line => line[0] == '1')
    .map!(line => line[253 .. 266].to!int)
    .sum
    .writeln;
}


Bye,
bearophile

Reply via email to