digitalmars.D.learn - Regarding std.range.indexed
- bearophile (13/13) Jan 13 2014 Code like this doesn't compile, the swap doesn't work:
- Jesse Phillips (4/17) Jan 13 2014 I thought it was to provide an index number during a foreach
- bearophile (5/9) Jan 13 2014 But "source" is immutable, so its elements aren't assignable.
Code like this doesn't compile, the swap doesn't work: import std.range: indexed; import std.algorithm: swap; void main() { immutable source = [10, 20, 30]; auto ind = indexed(source, [0, 1, 2]); swap(ind[0], ind[1]); } But isn't an important usage case of indexed() to shuffle and sort a view of an immutable array, like sorting a immutable(int)*[] ? Bye, bearophile
Jan 13 2014
On Tuesday, 14 January 2014 at 01:14:41 UTC, bearophile wrote:Code like this doesn't compile, the swap doesn't work: import std.range: indexed; import std.algorithm: swap; void main() { immutable source = [10, 20, 30]; auto ind = indexed(source, [0, 1, 2]); swap(ind[0], ind[1]); } But isn't an important usage case of indexed() to shuffle and sort a view of an immutable array, like sorting a immutable(int)*[] ? Bye, bearophileI thought it was to provide an index number during a foreach iteration. If you have an randomAccess range with assignable elements, why use indexed?
Jan 13 2014
Jesse Phillips:I thought it was to provide an index number during a foreach iteration.That's the enumerate() range, that is still missing in Phobos.If you have an randomAccess range with assignable elements, why use indexed?But "source" is immutable, so its elements aren't assignable. Bye, bearophile
Jan 13 2014