digitalmars.D.learn - Mutable array with fixed length
- Freddy (2/2) Sep 04 2014 How would you create a mutable array with a fixed(compile error
- Jonathan M Davis via Digitalmars-d-learn (22/24) Sep 04 2014 On Fri, 05 Sep 2014 00:26:07 +0000
How would you create a mutable array with a fixed(compile error when trying to change) length.
Sep 04 2014
On Fri, 05 Sep 2014 00:26:07 +0000 Freddy via Digitalmars-d-learn <digitalmars-d-learn puremagic.com> wrote:How would you create a mutable array with a fixed(compile error when trying to change) length.Static arrays have a fixed length and live on the stack. int[12] arr; Dynamic arrays have a mutable length and the memory that they refer to normally lives on the heap (though they can be slices of static arrays or any two pointers). int[] arr = new int[](12); If the array is fully const or immutable immutable(int[]) arr = new immutable(int[])(12); then its length can't be mutated, whereas if the elements are const or immutable but the array is not const(int)[] = new const(int)[](12); then the length can mutated but the elements cannot be. However, because const and immutable are transitive, there is no way to have an array whose elements are mutable but have the array itself (and thus its length) be const or immutable. So, to get what you want, you're probably going to have to create a wrapper struct that forwards all of the operations that you want and doesn't expose the ones you don't (e.g. length). - Jonathan M Davis
Sep 04 2014