1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00

a special last variable in for loops (experimental)

This commit is contained in:
Alexander Medvednikov 2019-11-05 17:15:19 +03:00
parent d279cedd28
commit 425c9ce401
2 changed files with 23 additions and 0 deletions

View File

@ -479,3 +479,17 @@ fn test_eq() {
assert [5,6,7].eq([6,7]) == false
assert [`a`,`b`].eq([`a`,`b`]) == true
}
fn test_for_last() {
numbers := [1, 2, 3, 4]
mut s := '['
for num in numbers {
s += '$num'
if !last {
s += ', '
}
}
s += ']'
assert s == '[1, 2, 3, 4]'
}

View File

@ -3377,6 +3377,15 @@ fn (p mut Parser) for_st() {
else if is_arr {
typ = typ[6..]// all after `array_`
p.gen_for_header(i, tmp, typ, val)
p.register_var(Var {
name: 'last'
typ: 'bool'
is_mut: false
is_used: true
})
// TODO don't generate if it's not used.
// Otherwise it's a C warning + perf.
p.genln('bool last = $i == $tmp . len - 1;')
}
else if is_str {
typ = 'byte'