Posts: 47
Threads: 22
Joined: Mar 2019
Reputation:
0
11-12-2019, 03:26 PM
(This post was last modified: 11-12-2019, 03:29 PM by maeloterkim.)
Hi
I didn't found the sintaxis for initialized data on 3D DIM array on this page
https://zxbasic.readthedocs.io/en/latest/dim/
2D is the only information
If i want initialized data on a 3D DIM array or 4D , etc what is the sintaxis to do it?
Thanks
Posts: 18
Threads: 3
Joined: Nov 2019
Reputation:
3
Same as for 2
DIM Array3D (3,2,1) AS ubyte => {{{{0,0}},{{0,0}},{{0,0}}},{{{0,0}},{{0,0}},{{0,0}}},{{{0,0}},{{0,0}},{{0,0}}},{{{0,0}},{{0,0}},{{0,0}}}}
Posts: 47
Threads: 22
Joined: Mar 2019
Reputation:
0
(11-13-2019, 08:43 PM)Week of the agents Wrote: Same as for 2
DIM Array3D (3,2,1) AS ubyte => {{{{0,0}},{{0,0}},{{0,0}}},{{{0,0}},{{0,0}},{{0,0}}},{{{0,0}},{{0,0}},{{0,0}}},{{{0,0}},{{0,0}},{{0,0}}}}
If i compile this with version-1.9.6 says :
sintaxis-array-3D.bas:1: Mismatched vector size. Expected 2 elements, got 1.
Posts: 1,766
Threads: 55
Joined: Aug 2019
Reputation:
24
11-14-2019, 02:11 PM
(This post was last modified: 11-14-2019, 02:13 PM by boriel.)
You can use _ to break lines for better code legibilty.
Also, when doing a DIM by default ZX Basic uses 0 index, o DIM a(3) contains FOUR slots a(0), a(1), a(2) and a(3).
If you want to start form 1 like in Sinclair BASIC either compile with --array-base=1 or write it as this:
DIM a(1 TO 3)
That said, I guess you want:
Code: DIM Array3D(1 TO 3, 1 TO 2, 1 TO 1) AS Ubyte => { _
{{0}, {0}}, _
{{0}, {0}}, _
{{0}, {0}} _
}
Another way is to use DIM(3, 2, 1) and ignore the 0 position, but you have to initialize it anyway:
Code: DIM Aarray3D(3, 2, 1) AS Ubyte => { _
{{0, 0}, {0, 0}, {0, 0}}, _
{{0, 0}, {0, 0}, {0, 0}}, _
{{0, 0}, {0, 0}, {0, 0}}, _
{{0, 0}, {0, 0}, {0, 0}} _
}
Hope this helps.
Posts: 47
Threads: 22
Joined: Mar 2019
Reputation:
0
(11-14-2019, 02:11 PM)boriel Wrote: You can use _ to break lines for better code legibilty.
Also, when doing a DIM by default ZX Basic uses 0 index, o DIM a(3) contains FOUR slots a(0), a(1), a(2) and a(3).
If you want to start form 1 like in Sinclair BASIC either compile with --array-base=1 or write it as this:
DIM a(1 TO 3)
That said, I guess you want:
Code: DIM Array3D(1 TO 3, 1 TO 2, 1 TO 1) AS Ubyte => { _
{{0}, {0}}, _
{{0}, {0}}, _
{{0}, {0}} _
}
Another way is to use DIM(3, 2, 1) and ignore the 0 position, but you have to initialize it anyway:
Code: DIM Aarray3D(3, 2, 1) AS Ubyte => { _
{{0, 0}, {0, 0}, {0, 0}}, _
{{0, 0}, {0, 0}, {0, 0}}, _
{{0, 0}, {0, 0}, {0, 0}}, _
{{0, 0}, {0, 0}, {0, 0}} _
}
Hope this helps.
Thanks this is more clear and works great
|