Function calls
torhu
no at spam.invalid
Sun Jan 31 14:40:13 PST 2010
On 29.01.2010 05:20, Steven Schveighoffer wrote:
> Andrei Alexandrescu Wrote:
>
>> Michiel Helvensteijn wrote:
>> > Andrei Alexandrescu wrote:
>> >
>> >>>> foreach (line; stdin.byLine()) { ... }
>> >>>>
>> >>>> vs.
>> >>>>
>> >>>> foreach (line; stdin.byLine) { ... }
>> >>>>
>> >>>> How do I choose?
>> >>> byLine is a property. It is fetching a range on stdin.
>> >>>
>> >>> -Steve
>> >> Damn. I was sure the answer will be different.
>> >
>> > byLine() is a function. It changes the state of stdin. Calling it
>> > consecutively will in general result in different return values. If there
>> > were two guys: stdin.currentLine (property) and stdin.nextLine(), it would
>> > be a different story.
>
> No no no. byLine returns a struct, it does not modify stdin. Operating on the struct modifies stdin, but that is outside the call to the property getter.
>
> Look at it this way (although this is not the only way to look at it), could byLine be a field inside stdin? It could. You could store a copy of what byLine returns inside stdin, and people could just access it.
Before more time is wasted in this discussion, I would like to point out
that byLine does actually have two arguments. I wrote a post about
byLine yesterday, but noone seems to have noticed..
More information about the Digitalmars-d
mailing list