diff options
author | FeepingCreature <default_357-line@yahoo.de> | 2013-09-08 13:40:48 +0200 |
---|---|---|
committer | FeepingCreature <default_357-line@yahoo.de> | 2013-09-08 13:40:48 +0200 |
commit | f5f3f2b3e5a6e3579d8f2217c96b5cd0d96298ee (patch) | |
tree | 705d1bf9b3e3f4088815c9a9f5a2b7484bd48e85 | |
parent | ff24568b098b2233961408960ab30518acaebe32 (diff) |
Document appender arrays and scope guards
-rw-r--r-- | neat.html.markdown | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/neat.html.markdown b/neat.html.markdown index b7777cdc..6a319a7d 100644 --- a/neat.html.markdown +++ b/neat.html.markdown @@ -141,6 +141,30 @@ void main(string[] args) { assert !(hewo is s); // same as assert (hewo !is s); + + // Allocate arrays using "new array length" + int[] integers = new int[] 10; + assert(integers.length == 10); + assert(integers[0] == 0); // zero is default initializer + integers = integers ~ 5; // This allocates a new array! + assert(integers.length == 11); + + // This is an appender array. + // Instead of (length, pointer), it tracks (capacity, length, pointer). + // When you append to it, it will use the free capacity if it can. + // If it runs out of space, it reallocates - but it will free the old array automatically. + // This makes it convenient for building arrays. + int[auto~] appender; + appender ~= 2; + appender ~= 3; + appender.free(); // same as {mem.free(appender.ptr); appender = null;} + + // Scope variables are automatically freed at the end of the current scope. + scope int[auto~] someOtherAppender; + // This is the same as: + int[auto~] someOtherAppender2; + onExit { someOtherAppender2.free; } + // You can do a C for loop too // - but why would you want to? for (int i = 0; i < 5; ++i) { } |