Collections
Ranges
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
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}"
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?6enddo |value|
pass 1 of 43values = (1..stop_value).to_a4even_count = values.count do |value1|5 value.even?6endAll 4 passes — pass 1 is the card above pass valuevalueseven_count1 1 — — 2 2 — — 3 3 — — 4 4 [1, 2, 3, 4] 2 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
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?6enddo |value|
pass 1 of 23values = (1..stop_value).to_a4even_count = values.count do |value1|5 value.even?6endeven_count ← 1
pass 2 of 23values = (1..stop_value).to_a4even_count→ 1 = values[1, 2].count do |value2|5 value.even?6endputs "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
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?6enddo |value|
pass 1 of 63values = (1..stop_value).to_a4even_count = values.count do |value1|5 value.even?6endAll 6 passes — pass 1 is the card above pass valuevalueseven_count1 1 — — 2 2 — — 3 3 — — 4 4 — — 5 5 — — 6 6 [1, 2, 3, 4, 5, 6] 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