Preferred behavior of take() with ranges (value vs reference range)
Jon D via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Sun Nov 8 21:10:18 PST 2015
On Monday, 9 November 2015 at 02:44:48 UTC, TheFlyingFiddle wrote:
> On Monday, 9 November 2015 at 02:14:58 UTC, Jon D wrote:
>> Here's an example of the behavior differences below. It uses
>> refRange, but same behavior occurs if the range is created as
>> a class rather than a struct.
>> --Jon
>
> This is an artifact of struct based ranges being value types.
> When you use take the range get's copied into another structure
> that is also a range but limits the number of elements you take
> from that range.
>
> ...
>
> If you want a more indepth explanation there were two talks at
> Dconf this year that (in part) discussed this topic.
> (https://www.youtube.com/watch?v=A8Btr8TPJ8c,
> https://www.youtube.com/watch?v=QdMdH7WX2ew&list=PLEDeq48KhndP-mlE-0Bfb_qPIMA4RrrKo&index=14)
Thanks for the quick reply. The two videos were very helpful. I
understood what was happening underneath (mostly), but the videos
made it clear there are a number of open questions regarding
reference and value ranges and how best to use them.
More information about the Digitalmars-d-learn
mailing list