struct const class sys::Range
sys::Obj sys::Range
@Serializable { simple=true }
Range represents a contiguous range of integers from start to end. Ranges may be represented as literals in Fantom source code as "start..end" for an inclusive end or "start..<end" for an exlusive range.
- contains
-
Return if this range contains the specified integer.
Example:
(1..3).contains(2) => true (1..3).contains(4) => false
- each
-
Call the specified function for each integer in the range. Also see
Int.times
.Example:
(1..3).each |i| { echo(i) } => 1, 2, 3 (1..<3).each |i| { echo(i) } => 1, 2 ('a'..'z').each |Int i| { echo(i) } => 'a', 'b', ... 'z'
- eachWhile
-
Obj? eachWhile(Func<Obj?,Int> f)
Iterate every integer in the range until the function returns non-null. If function returns non-null, then break the iteration and return the resulting object. Return null if the function returns null for every integer in the range.
- end
-
Int end()
Return end index.
Example:
(1..3).end => 3
- endIndex
- equals
-
virtual override Bool equals(Obj? obj)
Return true if same start, end, and exclusive.
- exclusive
-
Bool exclusive()
Is the end index exclusive.
Example:
(1..3).exclusive => false (1..<3).exclusive => true
- first
-
Int? first()
Get the first value of the range. If range contains no values then return null. Equivalent to
toList.first
. - fromStr
-
static new fromStr(Str str, Bool checked := true)
Parse from string format - inclusive is "start..end", or exclusive is "start..<end". If invalid format then throw ParseErr or return null based on checked flag.
- hash
-
virtual override Int hash()
Return start ^ end.
- inclusive
-
Bool inclusive()
Is the end index inclusive.
Example:
(1..3).inclusive => true (1..<3).inclusive => false
- isEmpty
-
Bool isEmpty()
Return if this range contains no integer values. Equivalent to
toList.isEmpty
. - last
-
Int? last()
Get the last value of the range. If range contains no values then return null. Equivalent to
toList.last
. - lastEnd
-
Int lastEnd()
Return last inclusive index Example: (1..<3).end => 2
- make
-
new make(Int start, Int end, Bool exclusive)
Constructor with start, end, and exclusive flag (all must be non-null).
- makeExclusive
-
static new makeExclusive(Int start, Int end)
Convenience for make(start, end, true).
- makeInclusive
-
static new makeInclusive(Int start, Int end)
Convenience for make(start, end, false).
- map
-
List<Obj?> map(Func<Obj?,Int> f)
Create a new list which is the result of calling c for every integer in the range. The new list is typed based on the return type of c.
Example:
(10..15).map |i->Str| { i.toHex } => Str[a, b, c, d, e, f]
- max
-
Int? max()
Get the maximum value of the range. If range contains no values then return null. Equivalent to
toList.max
. - min
-
Int? min()
Get the minimum value of the range. If range contains no values then return null. Equivalent to
toList.min
. - offset
-
Create a new range by adding offset to this range's start and end values.
Example:
(3..5).offset(2) => 5..7 (3..<5).offset(-2) => 1..<3
- random
-
Int random()
Convenience for
Int.random(this)
. Also seeInt.random
,Float.random
,List.random
, andRandom
. - start
-
Int start()
Return start index.
Example:
(1..3).start => 1
- startIndex
- toList
-
Convert this range into a list of Ints.
Example:
(2..4).toList => [2,3,4] (2..<4).toList => [2,3] (10..8).toList => [10,9,8]
- toStr
-
virtual override Str toStr()
If inclusive return "start..end", if exclusive return "start..<end".