How do I simulate an 2D array?
You need to create an array, then populate each element in the array with another array. This should work:
`//3x3 array
const ARRAY_X = 3
const ARRAY_Y = 3
ticTacToe <- array(ARRAY_Y);
foreach(y in ticTacToe) {
y = array(ARRAY_X);
}
function setPiece(x,y, token) {
ticTacToe[x][y] = token;
}`
We should probably have something in the dev center about this - I’ll add a task to make sure it gets looked at
`const ARRAY_X = 3
const ARRAY_Y = 3
ticTacToe <- array(ARRAY_Y);
foreach(y in ticTacToe) {
y = array(ARRAY_X);
}
function setPiece(x,y, token) {
ticTacToe[y][x] = token;
}
setPiece(1,1, 1);`
trying this code I get this:
2014-08-06 02:06:52 UTC+2 [Device] ERROR: trying to set 'null' 2014-08-06 02:06:52 UTC+2 [Device] ERROR: at setPiece:11 2014-08-06 02:06:52 UTC+2 [Device] ERROR: from main:14
Whoops - I guess you can’t use a foreach loop - that’s what I get for posting untested code in the forums
This works:
`const ARRAY_X = 3
const ARRAY_Y = 3
ticTacToe <- array(ARRAY_Y);
for(local i = 0; i < ARRAY_Y; i++) {
ticTacToe[i] = array(ARRAY_X);
}
function setPiece(x,y, token) {
ticTacToe[y][x] = token;
}
setPiece(1,1,1);
server.log(http.jsonencode(ticTacToe));`
Now it works, thanks.
For the record: why no foreach loop?
Because in “foreach (y in ticTacToe)”, the variable y is a new local which is initialised from the actual array member. It isn’t a reference back to the array member. So when beardedinventor’s original code assigned to y, that didn’t change the array ticTacToe as he’d hoped.
You could do
foreach (i,v in ticTacToe) { ticTacToe[i] = array(ARRAY_X); }
or even
ticTacToe.apply(@(y) array(ARRAY_X));
but they’re no clearer than the for-loop version really.
Peter
thank you Peter,
I could have known that I shouldn’t have asked. Way over my head.
But I like your examples. Maybe some day I’ll understand…