reimplement_pr_10974 (#11130)

This commit is contained in:
cooldome 2019-04-27 12:41:08 +01:00 • committed by GitHub
commit 3647c03cad
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 0 deletions

View file

@ -158,6 +158,9 @@ proc enumToString*(enums: openArray[enum]): string =
- Added `system.default`.
- Added `sequtils.items` for closure iterators, allows closure iterators
to be used by the the mapIt, filterIt, allIt, anyIt, etc.
### Library changes

View file

@ -949,6 +949,14 @@ macro mapLiterals*(constructor, op: untyped;
## works for nested tuples of arrays of sets etc.
result = mapLitsImpl(constructor, op, nested.boolVal)
iterator items*[T](xs: iterator: T): T =
## iterates over each element yielded by a closure iterator. This may
## not seem particularly useful on its own, but this allows closure
## iterators to be used by the the mapIt, filterIt, allIt, anyIt, etc.
## templates.
for x in xs():
yield x
when isMainModule:
import strutils
from algorithm import sorted
@ -1382,5 +1390,13 @@ when isMainModule:
doAssert outp == @[@["a", "b"], @["c", "d"]]
block:
proc iter(len: int): auto =
result = iterator(): int =
for i in 0..<len:
yield i
doAssert: iter(3).mapIt(2*it).foldl(a + b) == 6
when not defined(testing):
echo "Finished doc tests"