Add sortedBy template to sequtils
This commit is contained in:
parent
28fa1c3b40
commit
d3946aa621
1 changed files with 15 additions and 0 deletions
|
|
@ -26,6 +26,8 @@
|
|||
when not defined(nimhygiene):
|
||||
{.pragma: dirty.}
|
||||
|
||||
import algorithm
|
||||
|
||||
proc concat*[T](seqs: varargs[seq[T]]): seq[T] =
|
||||
## Takes several sequences' items and returns them inside a new sequence.
|
||||
##
|
||||
|
|
@ -415,6 +417,19 @@ template mapIt*(varSeq, op: expr) =
|
|||
let it {.inject.} = varSeq[i]
|
||||
varSeq[i] = op
|
||||
|
||||
template sortedBy*(seq1, op: expr): expr =
|
||||
## Convenience template around the ``sorted`` proc to reduce typing.
|
||||
##
|
||||
## The template injects the ``it`` variable which you can use directly in an
|
||||
## expression.
|
||||
var result {.gensym.} = sorted(seq1, proc(x, y: type(seq1[0])): int =
|
||||
var it {.inject.} = x
|
||||
let a = op
|
||||
it = y
|
||||
let b = op
|
||||
result = cmp(a, b))
|
||||
result
|
||||
|
||||
template newSeqWith*(len: int, init: expr): expr =
|
||||
## creates a new sequence, calling `init` to initialize each value. Example:
|
||||
##
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue