Fantom

 

const final class

sys::Range

sys::Obj
  sys::Range

@simple

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.

Slots

containsSource

Bool contains(Int i)

Return if this range contains the specified integer.

Example:

(1..3).contains(2)  =>  true
(1..3).contains(4)  =>  false
eachSource

Void each(|Int| c)

Call the specified function for each integer in the range.

Example:

('a'..'z').each |Int i| { echo(i) }
endSource

Int end()

Return end index.

Example:

(1..3).end  =>  3
equalsSource

override Bool equals(Obj? obj)

Overrides sys::Obj.equals

Return true if same start, end, and exclusive.

exclusiveSource

Bool exclusive()

Is the end index exclusive.

Example:

(1..3).exclusive   =>  false
(1..<3).exclusive  =>  true
firstSource

Int? first()

Get the first value of the range. If range contains no values then return null. Equivalent to toList.first.

fromStrSource

static Range? fromStr(Str s, 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.

hashSource

override Int hash()

Overrides sys::Obj.hash

Return start ^ end.

inclusiveSource

Bool inclusive()

Is the end index inclusive.

Example:

(1..3).inclusive   =>  true
(1..<3).inclusive  =>  false
isEmptySource

Bool isEmpty()

Return if this range contains no integer values. Equivalent to toList.isEmpty.

lastSource

Int? last()

Get the last value of the range. If range contains no values then return null. Equivalent to toList.last.

makeSource

new make(Int start, Int end, Bool exclusive)

Constructor with start, end, and exclusive flag (all must be non-null).

makeExclusiveSource

new makeExclusive(Int start, Int end)

Convenience for make(start, end, true).

makeInclusiveSource

new makeInclusive(Int start, Int end)

Convenience for make(start, end, false).

mapSource

Obj?[] map(|Int -> Obj?| c)

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]
maxSource

Int? max()

Get the maximum value of the range. If range contains no values then return null. Equivalent to toList.max.

minSource

Int? min()

Get the minimum value of the range. If range contains no values then return null. Equivalent to toList.min.

offsetSource

Range offset(Int 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
randomSource

Int random()

Convenience for Int.random(this).

startSource

Int start()

Return start index.

Example:

(1..3).start  =>  1
toListSource

Int[] 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]
toStrSource

override Str toStr()

Overrides sys::Obj.toStr

If inclusive return "start..end", if exclusive return "start..<end".