Ranges describe a continuous run of values and can be expanded into an array.

inclusive range An inclusive range such as `1..4` includes both endpoints.

Ranges

stop_value
ranges.rb
Replay: real traced execution (multi-file project)
stop_value = 4

values = (1..stop_value).to_a
even_count = values.count do |value|
  value.even?
end

puts "values=#{values.join(",")}"
puts "count=#{values.length}"
puts "even_count=#{even_count}"
stop_value = 2

values = (1..stop_value).to_a
even_count = values.count do |value|
  value.even?
end

puts "values=#{values.join(",")}"
puts "count=#{values.length}"
puts "even_count=#{even_count}"
stop_value = 6

values = (1..stop_value).to_a
even_count = values.count do |value|
  value.even?
end

puts "values=#{values.join(",")}"
puts "count=#{values.length}"
puts "even_count=#{even_count}"
  1. stop_value ← 4, values ← [1, 2, 3, 4]

    1stop_value→ 4 = 4  #@stop_value=2, 623values→ [1, 2, 3, 4] = (1..stop_value4).to_a4even_count = values[1, 2, 3, 4].count do |value|5  value.even?6end
  2. do |value|

    pass 1 of 4
    3values = (1..stop_value).to_a4even_count = values.count do |value1|5  value.even?6end
    All 4 passes — pass 1 is the card above
    passvaluevalueseven_count
    11
    22
    33
    44[1, 2, 3, 4]2
  3. puts "values=#{values.join(",")}"

    8puts "values=#{values.join(",")1,2,3,4}"9puts "count=#{values.length4}"10puts "even_count=#{even_count2}"
    outputvalues=1,2,3,4
    count=4
    even_count=2
  1. stop_value ← 2, values ← [1, 2]

    1stop_value→ 2 = 223values→ [1, 2] = (1..stop_value2).to_a4even_count = values[1, 2].count do |value|5  value.even?6end
  2. do |value|

    pass 1 of 2
    3values = (1..stop_value).to_a4even_count = values.count do |value1|5  value.even?6end
  3. even_count ← 1

    pass 2 of 2
    3values = (1..stop_value).to_a4even_count→ 1 = values[1, 2].count do |value2|5  value.even?6end
  4. puts "values=#{values.join(",")}"

    8puts "values=#{values.join(",")1,2}"9puts "count=#{values.length2}"10puts "even_count=#{even_count1}"
    outputvalues=1,2
    count=2
    even_count=1
  1. stop_value ← 6, values ← [1, 2, 3, 4, 5, 6]

    1stop_value→ 6 = 623values→ [1, 2, 3, 4, 5, 6] = (1..stop_value6).to_a4even_count = values[1, 2, 3, 4, 5, 6].count do |value|5  value.even?6end
  2. do |value|

    pass 1 of 6
    3values = (1..stop_value).to_a4even_count = values.count do |value1|5  value.even?6end
    All 6 passes — pass 1 is the card above
    passvaluevalueseven_count
    11
    22
    33
    44
    55
    66[1, 2, 3, 4, 5, 6]3
  3. puts "values=#{values.join(",")}"

    8puts "values=#{values.join(",")1,2,3,4,5,6}"9puts "count=#{values.length6}"10puts "even_count=#{even_count3}"
    outputvalues=1,2,3,4,5,6
    count=6
    even_count=3