Wie Sie im Kommentar auf John Antwort dachte, gibt es keine eingebaut für 2D-Arrays, die ich wissen, aber es ist nicht schwer, einen zu erstellen.
Hier habe ich 2 Hilfsfunktionen, eine verwendet haxe.ds.Vector
, die neu in Haxe 3 ist und für Sammlungen fester Größe optimiert ist. Die andere verwendet normale Arrays, kann also auf manchen Plattformen langsamer sein und hat technisch keine feste Breite, sondern wird nur auf eine bestimmte Größe initialisiert.
import haxe.ds.Vector;
class Vector2DTest
{
static function main()
{
// 2D vector, fixed size, sometimes faster
var v2d = Vector2D.create(3,5);
v2d[0][0] = "Top Left";
v2d[2][4] = "Bottom Right";
trace (v2d);
// [[Top Left,null,null,null,null],[null,null,null,null,null],[null,null,null,null,Bottom Right]]
// 2D array, technically variable size, but you'll have to initialise them. Sometimes slower.
var a2d = Array2D.create(3,5);
a2d[0][0] = "Top Left";
a2d[2][4] = "Bottom Right";
trace (a2d);
// [[Top Left,null,null,null,null],[null,null,null,null,null],[null,null,null,null,Bottom Right]]
}
}
class Vector2D
{
public static function create(w:Int, h:Int)
{
var v = new Vector(w);
for (i in 0...w)
{
v[i] = new Vector(h);
}
return v;
}
}
class Array2D
{
public static function create(w:Int, h:Int)
{
var a = [];
for (x in 0...w)
{
a[x] = [];
for (y in 0...h)
{
a[x][y] = null;
}
}
return a;
}
}
Die Vector2D wird nur auf Haxe 3 (später in diesem Monat) arbeiten, sollten Array2D auf Haxe gut funktionieren auch 2.
Warte, ich bin völlig neu bei Haxe, sagst du, dass es in Haxe keine einfache 2d-Array-Initialisierung gibt? Das ist interessant –
Nein .. da ist wirklich nicht. Die Art, wie Sie uns in Ihrem OP zeigen, ist, wie es gemacht werden sollte, aber es gibt viele Hilfsfunktionen, die es für Sie vereinfachen können. (Siehe Jasons Antwort) –
Grundlegende Typen können in Haxe nicht erweitert werden, das wird nicht funktionieren. Sie müssen auch einen Parameter angeben. –