frame86 at live.com
Thu Aug 4 18:05:22 UTC 2022
On Thursday, 4 August 2022 at 13:08:21 UTC, pascal111 wrote:
> 1) Why the programmer needs to program "empty()", "front()",
> and "popFront()" functions for ranges while they exist in the
> language library? it seems there's no need to exert efforts for
> that. "https://dlang.org/phobos/std_range_primitives.html"
- These functions are wrappers to use something as range
- Ranges need to implement the functions to keep their data
private, also there are complex types the need to handle data
- Ranges must implement the functions so other function can
recognize it as such (eg. `isInputRange`) - there is no common
interface, it's determined by compile time
> 2) "front()", and "popFront()" are using fixed constants to
> move forward the range, while they should use variables.
`front()` is always using the first element BUT `popFront()`
copies all elements except the first one into the variable (and
overwrites it), so it moves the data forward.
More information about the Digitalmars-d-learn