commit
b1bfd51200
1 changed files with 24 additions and 0 deletions
|
|
@ -409,6 +409,23 @@ template mapIt*(varSeq, pred: expr) =
|
||||||
let it {.inject.} = varSeq[i]
|
let it {.inject.} = varSeq[i]
|
||||||
varSeq[i] = pred
|
varSeq[i] = pred
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
when isMainModule:
|
when isMainModule:
|
||||||
import strutils
|
import strutils
|
||||||
block: # concat test
|
block: # concat test
|
||||||
|
|
@ -557,4 +574,11 @@ when isMainModule:
|
||||||
doAssert b.distribute(5, true)[4].len == 5
|
doAssert b.distribute(5, true)[4].len == 5
|
||||||
doAssert b.distribute(5, false)[4].len == 2
|
doAssert b.distribute(5, false)[4].len == 2
|
||||||
|
|
||||||
|
block: # newSeqWith tests
|
||||||
|
var seq2D = newSeqWith(4, newSeq[bool](2))
|
||||||
|
seq2D[0][0] = true
|
||||||
|
seq2D[1][0] = true
|
||||||
|
seq2D[0][1] = true
|
||||||
|
doAssert seq2D == @[@[true, true], @[true, false], @[false, false], @[false, false]]
|
||||||
|
|
||||||
echo "Finished doc tests"
|
echo "Finished doc tests"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue