Range in Ruby
Use Ruby's Range class to represent sequences of values, iterate over them, and check membership.
Creating Ranges
Ruby has two range operators: `..` (inclusive, includes the end value) and `...` (exclusive, excludes the end value). Ranges work with integers, floats, strings, and any object that implements `<=>` and `succ`.
1. Inclusive Range (..)
`a..b` includes both `a` and `b`.
2. Exclusive Range (...)
`a...b` includes `a` but excludes `b`.
3. String Ranges
Ranges work on strings using alphabetical order.
Iterating Over Ranges
Ranges are Enumerable — you can iterate over them with `each`, step through them with `step`, or use them directly in `for` loops.
1. each
Iterate every value in a range.
2. step
Iterate with a custom step size.
3. map / select on Range
Use Enumerable methods directly on ranges.
Membership & Comparison
Ruby ranges support `include?`, `cover?`, and `===` for membership testing. They are also used in `case` statements for range-based branching.
1. include? vs cover?
`include?` iterates to check membership; `cover?` uses comparison — much faster for large ranges.
2. Ranges in case Statements
Use ranges as conditions in `case/when` for clean branching.
3. clamp
Clamp a value to stay within a range.
Practical Uses
Ranges are used extensively in Ruby for array slicing, pagination, random numbers, and date spans.
1. Array Slicing with Ranges
Use a range as an index to slice arrays.
2. Random Number in Range
Use `rand` with a range to generate bounded random numbers.