mirror of
https://github.com/nim-lang/Nim.git
synced 2026-07-19 07:21:19 +00:00
reimplement_pr_10974 (#11130)
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user