mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 09:40:21 +00:00
37 lines
588 B
Perl
37 lines
588 B
Perl
|
|
|
|
struct Array {
|
|
data : int[3];
|
|
}
|
|
Array.metamethods.__for = function(syms,iter,body)
|
|
local pe = symbol()
|
|
local e = `@pe
|
|
return {e}, quote
|
|
var it = &iter
|
|
for i = 0,3 do
|
|
var [pe] = &it.data[i]
|
|
body
|
|
end
|
|
end
|
|
end
|
|
|
|
terra foo()
|
|
var a = Array{ array(1,2,3) }
|
|
for i in a do
|
|
i = i + 1
|
|
end
|
|
return a.data[0] + a.data[1] + a.data[2]
|
|
end
|
|
|
|
terra foo2()
|
|
var a = Array{ array(1,2,3) }
|
|
var s = 0
|
|
for i : double in a do
|
|
s = s + i
|
|
end
|
|
return s
|
|
end
|
|
|
|
assert(foo() == 9)
|
|
|
|
assert(foo2() == 6) |