Slices¶
Felix provides two slice types, these are derived types defined in the library.
Basic Type¶
A basic slice type:
union slice[T] =
| Slice_all
| Slice_from of T
| Slice_from_counted of T * T /* second arg is count */
| Slice_to_incl of T
| Slice_to_excl of T
| Slice_range_incl of T * T
| Slice_range_excl of T * T
| Slice_one of T
| Slice_none
;
Slice Expression¶
Slice values can be written like:
.. // all
first .. // first to maxval
first .+ count // first to first+count exclusive
first .. last // inclusive range
first ..< past // range exclusing end
Slice_one val // single value
Slice_none // empty slice
The base type of a slice must be of class Integral, both signed and unsigned types can be used. If there are two parameters they must be the same type.
Slice iterator¶
Slices are equipped with iterators. This means you can write a loop like:
for v in first .. last
perform println$ v
;
If the slice is given with literal integer values the loop is optimised to bypass the iterator closure and use inline range checks.