Wie funktioniert's?

Post a reply


In an effort to prevent automatic submissions, we require that you complete the following challenge.
Smilies
:D :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :| :mrgreen: :geek: :ugeek: :arrow: :angel: :clap: :crazy: :eh: :lolno: :problem: :shh: :shifty: :sick: :silent: :think: :thumbup: :thumbdown: :salute: :wave: :wtf: :yawn: :facepalm: :bravo: :dance: :beard: :morebeard: :xmas: :HeHe: :trollface: :cookie: :rainbow: :monkeysee: :monkeysay: :happybday: :headwall: :offtopic: :superhappy: :terms: :beer:
View more smilies

BBCode is ON
[img] is OFF
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Wie funktioniert's?

Re: Wie funktioniert's?

Post by just me » 16 May 2019, 10:16

Moin,

die For-Schleife arbeitet intern mit einem Enumerator-Objekt, das darauf spezialisiert ist, alle Schlüssel/Wert-Paare nacheinander in aufsteigender Reihenfolge zurückzugeben.

Bei Loop % MeinArray.MaxIndex() weiß MeinArray nichts davon, dass die Schleife immer den nächsten Schlüssel erwartet. So muss für jeden Schlüssel erst einmal geprüft werden, ob er existiert, d.h. die interne Tabelle mit den Schlüsseln wird jedes Mal neu durchsucht.

Soll sagen: Wenn Du die Wahl zwischen einem 'Spezialisten' (For) und einem 'Universalisten' (Loop) hast, nimm lieber den Spezi.

Grüße,
just me

Re: Wie funktioniert's?

Post by Folllast » 16 May 2019, 07:47

nnnik wrote:
15 May 2019, 05:44
jNizM wrote:
14 May 2019, 03:19
oder:

Code: Select all

MeineZahl := 1337
MeinArray := StrSplit(MeineZahl)

loop % MeinArray.MaxIndex()
	Quersumme += MeinArray[A_Index]

MsgBox % Quersumme
Normale loops sollte man besser niemals verwenden um über die arrays zu iterieren.
warum?

Re: Wie funktioniert's?

Post by nnnik » 15 May 2019, 05:44

jNizM wrote:
14 May 2019, 03:19
oder:

Code: Select all

MeineZahl := 1337
MeinArray := StrSplit(MeineZahl)

loop % MeinArray.MaxIndex()
	Quersumme += MeinArray[A_Index]

MsgBox % Quersumme
Normale loops sollte man besser niemals verwenden um über die arrays zu iterieren.

Re: Wie funktioniert's?

Post by jNizM » 14 May 2019, 03:19

Interessant zu sehen mit "unsichtbarem" Ascii-Zeichen
Image

Code: Select all

For ​,​ in StrSplit("123")
​​+=​
MsgBox,% ​​

oder z.B. in leserlich :D

Code: Select all

MeineZahl := 1337
MeinArray := StrSplit(MeineZahl)

for Index, Zahl in MeinArray
	Quersumme += Zahl

MsgBox % Quersumme
oder:

Code: Select all

MeineZahl := 1337
MeinArray := StrSplit(MeineZahl)

loop % MeinArray.MaxIndex()
	Quersumme += MeinArray[A_Index]

MsgBox % Quersumme

Re: Wie funktioniert's?

Post by gregster » 14 May 2019, 02:09

Verwendet offenbar das Unicode-Zeichen "Zero-Width Space" als Variablennamen (mal eins, mal zwei hintereinander):
AHK ist halt syntaxmäßig recht großzügig :D

zero width space.png
zero width space.png (4 KiB) Viewed 1674 times
(https://www.soscisurvey.de/tools/view-chars.php)

Wie funktioniert's?

Post by Rohwedder » 14 May 2019, 01:43

Berechnet die Quersumme von 123:

Code: Select all

For ​,​ in StrSplit("123")
​​+=​
MsgBox,% ​​

Top