Wie Array of Array mit new erstellen?

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

DaysShadow

Betreff: Wie Array of Array mit new erstellen?

BeitragDi, Apr 27, 2010 16:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Hiho,

Die Frage ist mir fast schon peinlich und sicher total banal aber ich bekomme es gerade nicht hin... -_-

Folgendes gibt mir den Fehler "Unable to convert from Int to Int Array Array"
Die auskommentierte Initialisierung funktioniert aber...ich weiß einfach nicht wo der Fehler liegt, bitte helft mir mal auf die Sprünge!

BlitzMax: [AUSKLAPPEN]
SuperStrict

Local blubb:Int[ ][ ] = New Int[ 2 ][ 3 ]
'Local blubb:Int[ ][ ] = [ [ 4, 4, 4 ], [ 5, 5, 5 ] ]

Print( blubb[ 1 ][ 2 ] )


Edit: Oder muss ich blubb:int[ 2, 3 ] nutzen? Das ist aber wieder was anderes oder?

MfG DaysShadow
Blessed is the mind too small for doubt

Jo0oker

BeitragDi, Apr 27, 2010 16:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Edit: Ziehe meine Aussage zurück.
Tehadon, das kostenlose 3D RPG
www.tehadon.de
http://www.blitzforum.de/worklogs/14/
Das Abenteuer wird beginnen!
  • Zuletzt bearbeitet von Jo0oker am Di, Apr 27, 2010 17:07, insgesamt einmal bearbeitet

DaysShadow

BeitragDi, Apr 27, 2010 17:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Mir ist schon klar wie ein mehrdimensionales Array zu handhaben ist, aber sonst habe ich nur blubb:int[ 3, 2] genutzt.
blubb:int[ ][ ] scheint es aber ja auch zu geben, sonst würde das eine Beispiel ja nicht gehen, oder?
Gibt es da überhaupt einen Unterschied zwischen den beiden, von der Schreibweise mal abgesehen?

Ist array of array = mehrdimensionales array?

Ich bin verwirrt.

Edit: Andere Frage, wie kann ich blubb:int[ , ] initialisieren, also das ich direkt die Werte angebe ohne erst über new zu gehen.

MfG DaysShadow
Blessed is the mind too small for doubt

FireballFlame

Betreff: Re: Wie Array of Array mit new erstellen?

BeitragDi, Apr 27, 2010 17:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Dein "Unable to convert from Int to Int Array Array" kommt, weil der Compiler bei
BlitzMax: [AUSKLAPPEN]
Local blubb:Int[ ][ ] = New Int[ 2 ][ 3 ]
ein Array mit 2 Elementen macht, und dann das 3. Element davon auslesen will, bevor er es der Variable zuweist.
Wenn du wirklich ein Array mit anderen Arrays drin deklarieren willst, musst du wohl erst das "äußere" Array erstellen und dessen Elementen dann in einer Schleife die inneren zuweisen.

EDIT:
DaysShadow hat Folgendes geschrieben:
Mir ist schon klar wie ein mehrdimensionales Array zu handhaben ist, aber sonst habe ich nur blubb:int[ 3, 2] genutzt.
blubb:int[ ][ ] scheint es aber ja auch zu geben, sonst würde das eine Beispiel ja nicht gehen, oder?
Gibt es da überhaupt einen Unterschied zwischen den beiden, von der Schreibweise mal abgesehen?
Ja, das eine ist eben ein zweidimensioneles Array mit Ints drin und das andere ein eindimensionales Array mit eindimensionalen Arrays drin (mit Ints drin). Erstere sind einfacher zu nutzen (wie du siehst Wink ), zweitere haben aber mehr Möglichkeiten, z.B. kann die 2. Dimension für jedes Feld der 1. unterschiedlich groß sein.

DaysShadow hat Folgendes geschrieben:
Edit: Andere Frage, wie kann ich blubb:int[ , ] initialisieren, also das ich direkt die Werte angebe ohne erst über new zu gehen.
Ich glaube, das geht nicht.
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit
  • Zuletzt bearbeitet von FireballFlame am Di, Apr 27, 2010 17:15, insgesamt 3-mal bearbeitet

Noobody

BeitragDi, Apr 27, 2010 17:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Arrays von Arrays kann man leider nicht mit New erstellen, da [] eine höhere Priorität hat als =. Daher interpretiert der Compiler zuerst New Int[ 2 ] und gibt dann das vierte Element (wegen [ 3 ]) zurück.

Daher musst du Arrays von Arrays händisch mit verschachtelten Schleifen intialisieren. Das kann je nach Arraygrösse enorm zeitaufwändig sein, daher würde ich mir das nochmals überlegen.

DaysShadow hat Folgendes geschrieben:
Gibt es da überhaupt einen Unterschied zwischen den beiden, von der Schreibweise mal abgesehen?

Den gibt es. Arrays von Arrays kann man, im Gegensatzn zu mehrdimensionalen Arrays, slicen. Ausserdem müssen einzelne Zeilen nicht unbedingt gleich lang sein; man kann sogar einzelne Zeilen sehr schnell durch andere austauschen.
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun

DaysShadow

BeitragDi, Apr 27, 2010 17:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Ah ok, irgendein Unterschied muss ja existieren.

Also geht es nur so diese Art von Array zu erstellen:
BlitzMax: [AUSKLAPPEN]
Local blubb:Int[ ][ ] = [ [ 5 ], [ 3 ] ]

Aber da das weitestgehend unkomfortabel ist, benutzt man dann halt die mehrdimensionalen Arrays oder halt Types so wie Jo0oker es beschrieben hat, macht Sinn.

Aber das die mehrdimensionalen Arrays nicht zu initalisieren gehen ist irgendwie doof.

Danke an alle, jetzt bin ich weniger verwirrt Wink

MfG DaysShadow
Blessed is the mind too small for doubt

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group