← All examples

Variadic

variadic.zg
fn sum [...'nums'] -> bin64 {
    let 'total': bin64 = 0;
    for 'n' in lend 'nums' { change 'total' = 'total' plus to.bin64['n']; }
    return 'total';
}

fn count_ints [...'nums': int32] -> uint64 {
    return list.length[lend 'nums'];
}

fn show [lent 'label': str.utf8, lent ...'parts'] {
    std::print.useful['label', ": "];
    for 'p' in lend 'parts' { std::print.useful['p', " "]; }
    std::print.stored[newln];
}

MAIN {
    std::print.useful[sum[1, 2.5, 3], newln];
    std::print.useful[sum[], newln];
    std::print.useful[count_ints[4, 5, 6], newln];
    let 'name' := "Ann";
    show["mixed", lend 'name', 7, true, `x`];
    show["none"];
}
Output
6.5
0
3
mixed: Ann 7 true x 
none: