added sequtils.reversed; refs #3148

This commit is contained in:
Araq
2015-08-09 20:28:49 +02:00
parent 35f8cc0bdd
commit cf4879bc48

View File

@@ -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"