GLBasic forum

Other languages => GLBasic - de => Topic started by: backslider on 2012-Jan-17

Title: [Idee] FOREACH-Schleife optional mehrdimensional durchlaufen
Post by: backslider on 2012-Jan-17
Hi Leute,

meint ihr - auch wenn es nicht ganz "programmierkonform" ist - es wäre eine gute Idee,
die FOREACH-Schleife optional auch z.B. in mehrdimensionalen Types durch alle Dimensionen zu jagen?

Normal wird ja immer nur die erste Dimension durchlaufen.

Beispiel:
Code (glbasic) Select

TYPE test
ENDTYPE

LOCAL arr[] as test
DIM arr[10][10]

MULTIDIMFOREACH blub in arr[] //oder so ;)
//alle xy-Dimensionen durchlaufen...
NEXT

//Aktuelle und eigentlich normale "Alternative" mit mehr Schreibaufwand
FOR i%=0 TO 9
    FOR j%=0 TO 9

    NEXT
NEXT


Wenns 'ne schlechte Idee ist, vergebt mir.  :whistle:  :nana:

MfG
Title: Re: [Idee] FOREACH-Schleife optional mehrdimensional durchlaufen
Post by: Quentin on 2012-Jan-17
ähh, wie soll das denn gehen? Wie soll dein MULTIFOREACH denn wissen, welche Dimension zuerst durchlaufen werden soll?
Was spricht bei mehrdimensionalen Arrays gegen geschachtelte FOREACH-Schleifen?

Code (glbasic) Select

DIM arr[10][10]

FOREACH bla in arr[]
    FOREACH blub in arr[bla][]
        ...processing...
    NEXT
NEXT
Title: Re: [Idee] FOREACH-Schleife optional mehrdimensional durchlaufen
Post by: backslider on 2012-Jan-17
Ach so habe ich das noch gar nicht probiert...  :D
Das ist natürlich das, was ich gesucht habe.

Danke! ;)
Title: Re: [Idee] FOREACH-Schleife optional mehrdimensional durchlaufen
Post by: Kitty Hello on 2012-Jan-17
geht das?
Title: Re: [Idee] FOREACH-Schleife optional mehrdimensional durchlaufen
Post by: backslider on 2012-Jan-17
Quote from: Kitty Hello on 2012-Jan-17
geht das?

Nö...Zu früh gefreut :D
Title: Re: [Idee] FOREACH-Schleife optional mehrdimensional durchlaufen
Post by: monono on 2012-Jan-17
Die Idee ist schick. Leider ignoriert sowohl FOREACH als auch LEN() die erste Dimension und nimmt immer die 0 an. Bleibt wohl nur ein nested loop. Und bla ist natürlich kein Index sondern ein Inhalt :).

:offtopic:
Wo wir hier gerade bei Wünschen für die Sprache sind: Ich wünsche mir casting. Hab schon angefangen alle meine Types in ein Muttertype zu stecken, was alle Typesorten beinhalten kann :S.
Title: Re: [Idee] FOREACH-Schleife optional mehrdimensional durchlaufen
Post by: Quentin on 2012-Jan-17
lol
ja, das geht net. Wäre aber prinzipiell nicht schlecht.

ein

FOREACH bla IN arr[][]

müsste dann erlaubt sein. Die Schleife könnte dann

arr[0][0]
arr[0][1]
...
arr[0][9]
arr[1][0]
...

durchlaufen.
Title: Re: [Idee] FOREACH-Schleife optional mehrdimensional durchlaufen
Post by: Kitty Hello on 2012-Jan-17
sollte machbar sein. Hat jemand ein praktisches Beispiel dazu?
Title: Re: [Idee] FOREACH-Schleife optional mehrdimensional durchlaufen
Post by: Schranz0r on 2012-Jan-17
Eine Map als Type:
Code (glbasic) Select

TYPE Tile
    spr_id%
    ...   
    FUNCTION Blub:
        ...
    ENDFUNCTION
ENDTYPE

GLOBAL Map[] AS Tile
REDIM  Map[10][10]

...

FOREACH t IN Map[]
    t.Blub() // zb zeichen oder sowas
NEXT
   


Würde ich auch gut finden! :)
Macht nen sehr schönen und vorallen übersichtlichen Code.
Wie man allerdings dann auf die verschiedenen Felder zugreifen kann, oder soll .... Hmmmmm :)
Title: Re: [Idee] FOREACH-Schleife optional mehrdimensional durchlaufen
Post by: backslider on 2012-Jan-18
@Schranz0r: Genau bei dem Beispiel bin ich auf die Idee gekommen... :D

Auf die einzelnen Felder zugreifen geht dann natürlich erstmal nicht so einfach, aber das braucht man auch nicht immer.
Title: Re: [Idee] FOREACH-Schleife optional mehrdimensional durchlaufen
Post by: Kitty Hello on 2012-Jan-18
OK, ich hab das mal eingebaut und es umgeht damit auch die BOUNDS() Prüfung des Arrays (Ich weiß die Größe ja und bin sicher, dass hier nichts daneben geht).
Das sollte also auch bisserl schneller werden.
Title: Re: [Idee] FOREACH-Schleife optional mehrdimensional durchlaufen
Post by: backslider on 2012-Jan-18
Du bist der Beste!  :booze:
Title: Re: [Idee] FOREACH-Schleife optional mehrdimensional durchlaufen
Post by: Schranz0r on 2012-Jan-18
nice  <3
Title: Re: [Idee] FOREACH-Schleife optional mehrdimensional durchlaufen
Post by: Markus on 2012-Apr-23
Habs grad gelesen.

Warum überhaupt Mehrdimensional?
Bei der Tilemap z.B. brauch das Tile was gemalt werden soll doch nur die x,y Pos.
Kann dann doch alles in eine Liste.


Title: Re: [Idee] FOREACH-Schleife optional mehrdimensional durchlaufen
Post by: backslider on 2012-Apr-23
Z.B. weils in einer FOREACH irrelevant sein sollte (in einem Basic), wie viele Dimensionen man hat.
Da es schon oft passiert ist, dass Leute sich gefragt haben, wieso jetzt nur die erste Zeile angezeigt wird. ;)

Und es ist einfach bequemer.
Title: Re: [Idee] FOREACH-Schleife optional mehrdimensional durchlaufen
Post by: Markus on 2012-Apr-23
@backslider
ja foreach solle alle Elemente durchlaufen, da sind wir gleicher Meinung.