added sequtils.reversed; refs #3148

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

View file

@ -451,6 +451,21 @@ template newSeqWith*(len: int, init: expr): expr =
result[i] = init result[i] = init
result 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: when isMainModule:
import strutils import strutils
block: # concat test block: # concat test
@ -615,5 +630,13 @@ when isMainModule:
#doAssert a.repeat(-1) == @[] # will not compile! #doAssert a.repeat(-1) == @[] # will not compile!
doAssert b.repeat(3) == @[] 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): when not defined(testing):
echo "Finished doc tests" echo "Finished doc tests"