Category talk:Wren-seq: Difference between revisions
Content added Content deleted
(→Source code: Added Seq.peek) |
(→Source code: Added Lst.between method.) |
||
Line 735: | Line 735: | ||
// As 'sortPart' above but uses the default comparer: {|i, j| i < j }. |
// As 'sortPart' above but uses the default comparer: {|i, j| i < j }. |
||
static sortPart(a, start, end) { sortPart(a, start, end) {|i, j| i < j } } |
static sortPart(a, start, end) { sortPart(a, start, end) {|i, j| i < j } } |
||
// Returns a list of numbers between 'start' and 'end' inclusive |
|||
// having a positive step of 'step' between successive numbers. |
|||
// If 'ascend' is true, the numbers are incremented by 'step' |
|||
// otherwise they are decremented by 'step'. |
|||
// If `ascend' is true and start > end, an empty list is returned. |
|||
// If 'ascend' is false and start < end, an empty list is returned. |
|||
static between(start, end, step, ascend) { |
|||
if (step <= 0) Fiber.abort("Step must be a positive number.") |
|||
if ((start > end && ascend) || (start < end && !ascend)) return [] |
|||
var lst = [] |
|||
var i = start |
|||
if (ascend) { |
|||
while (i <= end) { |
|||
lst.add(i) |
|||
i = i + step |
|||
} |
|||
} else { |
|||
while (i >= end) { |
|||
lst.add(i) |
|||
i = i - step |
|||
} |
|||
} |
|||
return lst |
|||
} |
|||
// Convenience versions of the above method which use default values for some parameters. |
|||
static between(start, end, step) { between(start, end, step, start <= end) } |
|||
static between(start, end) { between(start, end, 1, start <= end) } |
|||
} |
} |
||