Phobos packages a bit confusing
Andrei Alexandrescu
SeeWebsiteForEmail at erdani.org
Mon Nov 30 12:17:25 PST 2009
Denis Koroskin wrote:
> On Mon, 30 Nov 2009 18:25:41 +0300, Andrei Alexandrescu
> <SeeWebsiteForEmail at erdani.org> wrote:
>
>> retard wrote:
>>> Mon, 30 Nov 2009 12:01:22 +0100, Ary Borenszweig wrote:
>>>
>>>> KennyTM~ wrote:
>>>>>>> By
>>>>>>> far the two most important pieces of I/O functionality I need are:
>>>>>>>
>>>>>>> 1. Read a text file line-by-line.
>>>>>> foreach (line; new Lines!(char) (new File ("foobar.txt")))
>>>>>> Cout (line).newline;
>>>>>> }
>>>>>>
>>>>>>
>>>>> yuck.
>>>> Yuck?? I find that code very elegant. How would you like it to be?
>>> I guess something like this:
>>> JustDoItWith("foobar.txt") {
>>> ...
>>> }
>>
>> foreach (char[] line; File("text.txt").byLine()) {
>> ...
>> }
>>
>> Efficient, flexible, convenient. Closes automatically the file, too,
>> which Tango seems doesn't.
>>
>>
>> Andrei
>
> If it closes file automatically, then why do you close it explicitly in
> slurp?
Because a compiler bug prevented the destructor from functioning
correctly. The manual close does no harm now but of course should be
removed.
> The code is almost the same except that "Lines" class works with any
> Input Stream (memory stream, file stream, network stream, pipe, i/o
> device etc).
I hope we'd be able to add such streams to Phobos too, perhaps using
your networking library for transport.
Andrei
More information about the Digitalmars-d
mailing list