diff options
author | def <dennis@felsin9.de> | 2014-07-23 15:47:46 +0200 |
---|---|---|
committer | def <dennis@felsin9.de> | 2014-07-23 15:47:46 +0200 |
commit | 5e2614a7d63647ece5774725a85e9482b9f02057 (patch) | |
tree | 0c8efb5721f8c65fa00de84b2b7269660c685309 | |
parent | 8968b5114fcbf7c9d4052b06e2a6012aa88a757d (diff) | |
download | Nim-5e2614a7d63647ece5774725a85e9482b9f02057.tar.gz |
Add newSeqWith
-rw-r--r-- | lib/system.nim | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/lib/system.nim b/lib/system.nim index 2fb08563a..96c611282 100644 --- a/lib/system.nim +++ b/lib/system.nim @@ -476,6 +476,23 @@ proc newSeq*[T](len = 0): seq[T] = ## #inputStrings[3] = "out of bounds" newSeq(result, len) +template newSeqWith*(len: int, init: expr): expr = + ## creates a new sequence, calling `init` to initialize each value. Example: + ## + ## .. code-block:: nimrod + ## var seq2D = newSeqWith(20, newSeq[bool](10)) + ## seq2D[0][0] = true + ## seq2D[1][0] = true + ## seq2D[0][1] = true + ## + ## import math + ## var seqRand = newSeqWith(20, random(10)) + ## echo seqRand + var result {.gensym.} = newSeq[type(init)](len) + for i in 0 .. <len: + result[i] = init + result + proc len*[TOpenArray: openArray|varargs](x: TOpenArray): int {. magic: "LengthOpenArray", noSideEffect.} proc len*(x: string): int {.magic: "LengthStr", noSideEffect.} |