Problems with stdio.byLine() in D Book
Andrej Mitrovic
andrej.mitrovich at gmail.com
Thu Dec 16 13:09:56 PST 2010
Don't forget to bookmark the errata page:
http://erdani.com/tdpl/errata/index.php?title=Main_Page ;)
On 12/16/10, Chris A <CodexArcanum at gmail.com> wrote:
> Hmm... maybe my compiler was out of date. I downloaded DMD again and tried
> your code, and it seems to build fine now.
>
> Sorry for the trouble then, thank you for setting me on the right path
> Andrej.
>
>
> Andrej Mitrovic Wrote:
>
>> This works fine for me:
>>
>> import std.stdio;
>> import std.string;
>>
>> void main(string[] args)
>> {
>> uint[string] freqs;
>> foreach(lines; stdin.byLine()) {
>> foreach(word; split(strip(lines))) {
>> ++freqs[word.idup];
>> }
>> }
>> foreach(key, value; freqs){
>> writefln("%6u\t%s", value, key);
>> }
>> getchar();
>> }
>>
>> Perhaps you missed an import
>>
>> On 12/16/10, Chris A <CodexArcanum at gmail.com> wrote:
>> > Hey all, I'm going over some examples in Alexandrescu's book, but I
>> > guess
>> > something has changed in the language because the example isn't working
>> > for
>> > me.
>> >
>> > The simple example:
>> >
>> > void main(string[] args)
>> > {
>> > uint[string] freqs;
>> > foreach(lines; stdin.byLine()) {
>> > foreach(word; split(strip(lines))) {
>> > ++freqs[word.idup];
>> > }
>> > }
>> > foreach(key, value; freqs){
>> > writefln("%6u\t%s", value, key);
>> > }
>> > din.getc();
>> > }
>> >
>> >
>> > This throws an error during compile, like:
>> > main.d(11): Error: no property 'ByLine' for type '_iobuf'
>> > main.d(11): Error: function expected before (), not 1 of type int
>> > main.d(11): Error: foreach: int is not an aggregate type
>> >
>> > So seemingly byLine is no longer an existing function on stdin. What is
>> > the
>> > current version of what this code is trying to do?
>> >
>
>
More information about the Digitalmars-d-learn
mailing list