diff options
author | Araq <rumpf_a@web.de> | 2015-08-09 20:28:49 +0200 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2015-08-09 20:29:03 +0200 |
commit | cf4879bc48f39a7fbdd030431be4ffe968e2a555 (patch) | |
tree | 72ee7755be4e43483bfeea9a569d348cf43c12a5 | |
parent | 35f8cc0bdde8e923eaca8830676f1b2ad6ffe300 (diff) | |
download | Nim-cf4879bc48f39a7fbdd030431be4ffe968e2a555.tar.gz |
added sequtils.reversed; refs #3148
-rw-r--r-- | lib/pure/collections/sequtils.nim | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/lib/pure/collections/sequtils.nim b/lib/pure/collections/sequtils.nim index 5fac1f0af..1e75376df 100644 --- a/lib/pure/collections/sequtils.nim +++ b/lib/pure/collections/sequtils.nim @@ -451,6 +451,21 @@ template newSeqWith*(len: int, init: expr): expr = result[i] = init result +proc reversed*[T](s: seq[T]): seq[T] = + ## Takes a sequences and returns a new reversed one + ## + ## Example: + ## + ## .. code-block:: + ## + ## let s1 = @[1, 2, 3, 4, 5] + ## let s2 = @[5, 4, 3, 2, 1] + ## assert s2 == s1.reversed() + ## + result = s + let ln = result.len + for i in 0..(ln div 2)-1: swap(result[i], result[ln-i-1]) + when isMainModule: import strutils block: # concat test @@ -615,5 +630,13 @@ when isMainModule: #doAssert a.repeat(-1) == @[] # will not compile! doAssert b.repeat(3) == @[] + block: # reversed tests: + let + a = @[1, 2, 3] + b: seq[int] = @[] + + doAssert a.reversed == @[3, 2, 1] + doAssert b.reversed == @[] + when not defined(testing): echo "Finished doc tests" |