Blog post about multidimensional arrays in D

WebFreak001 d.forum at webfreak.org
Fri Mar 27 11:19:06 UTC 2020


On Friday, 27 March 2020 at 10:57:10 UTC, p.shkadzko wrote:
> I decided to write a small blog post about multidimensional 
> arrays in D on what I learnt so far. It should serve as a brief 
> introduction to Mir slices and how to do basic manipulations 
> with them. It started with a small file with snippets for 
> personal use but then kind of escalated into an idea of a blog 
> post.
>
> However, given the limited about of time I spent in Mir docs 
> and their conciseness, it would be great if anyone had a second 
> look and tell me what is wrong or missing because I have a 
> feeling a lot of things might. It would be a great opportunity 
> for me to learn and also improve it or rewrite some parts.
>
> All is here: 
> https://github.com/tastyminerals/tasty-blog/blob/master/_posts/2020-03-22-multidimensional_arrays_in_d.md

I don't really know mir myself, but for the start of the content:

> Both array types represent a structure with a length and ptr (a 
> pointer to the first element) properties

A static array doesn't really fall under this imo, because it 
doesn't have any length field at runtime and is literally just 
the elements repeated N times.


> Dynamic arrays are also called slices in D

meh, all dynamic arrays are also slices, but not all slices are 
dynamic arrays. You can take a slice from a static array or from 
a pointer and once you try to append to it or resize it, it will 
duplicate the data using the GC and create a new dynamic array. 
This is true every time you take a slice of any array or memory 
and then try to resize it. If the slice was originally from a 
dynamic array (checked using runtime magic) and you use 
assumeSafeAppend, it will actually try to resize the existing 
array in-place.





More information about the Digitalmars-d-learn mailing list