#!/usr/bin/ruby

var arr = [1,2,3,4];

for i in arr {
    next if i==2;
    if (i == 2) {
        die "next error!";
    }
}

var i = 42;
assert_eq(i, 42);

for i in arr {
    break if i==2;
    if (i >= 2) {
        die "break error!";
    }
}

assert_eq(i, 42);
i = 99;

for i in arr {
    say i;
}

assert_eq(i, 99);

for c in "string" {
    say "<#{c}>"
}

for i,k in Hash(a => 1, b => 2) {
    say "<#{i}> <#{k}>";
}

for i,j,k in [
    %w(a b d),
    %w(e f g),
] {
    say "<#{i}> <#{j}> <#{k}>"
}

assert_eq(i, 99)

var a1 = []
var a2 = []
for i,j,*k in [[1,2,3,4], [5,6,7,8]] {
    say "<#{i}> <#{j}> <#{k}>";
    a1 << j
    a2 << k
}

assert_eq(a1, [2, 6])
assert_eq(a2, [[3,4],[7,8]])

for i,:j in [
    %w(a b c d e),
    %w(f g h i j),
] {
    say "#{i} => #{j}"
}

var h = []
for :j in [
    %w(a b c d),
    %w(e f g h),
] {
    h << j
}

assert_eq(i, 99)
assert_eq(h, [Hash(<a b c d>...), Hash(<e f g h>...)])