#!/usr/bin/ruby
class MyRange(from, to) {
method iter {
var b = to;
var i = from;
func {
i <= b ? i++ : nil
}
}
}
say '=> User defined range:'
var r = MyRange(1, 5)
for i in r {
say i
}
say '=> User defined range with next:'
for i in MyRange(1, 8) {
next if (i%2 == 0)
say i
}
say '=> Array range:'
for i in [1,2,3] {
say i
}
say '=> Array range with break:'
for i in [1,2,3,4,5,6,7,8] {
say i
break if (i == 3)
}
say '=> Array range with next:'
for i in [1,2,3,4,5,6,7,8] {
next if (i%2 == 0)
say i
}
say '=> Numeric built-in range:'
for i in range(0, 8) {
next if (i%2 == 0);
say i;
}
say '=> String built-in range:'
for i in range('a', 'f') {
say i
}
say '=> Very big built-in numeric range:'
for i in range(1, 1e9) {
say i;
break if (i == 5);
}
say '=> Very big user-defined range:'
for i in MyRange(1, 1e9) {
say i;
break if (i == 5);
}
say '=> Prefix caret range:'
for i in ^100 {
next if (i%2 == 0)
say i
break if (i == 7)
}