Wie funktioniert's?

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

Rohwedder
Posts: 7630
Joined: 04 Jun 2014, 08:33
Location: Germany

Wie funktioniert's?

14 May 2019, 01:43

Berechnet die Quersumme von 123:

Code: Select all

For ​,​ in StrSplit("123")
​​+=​
MsgBox,% ​​
gregster
Posts: 9002
Joined: 30 Sep 2013, 06:48

Re: Wie funktioniert's?

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 1672 times
(https://www.soscisurvey.de/tools/view-chars.php)
User avatar
jNizM
Posts: 3183
Joined: 30 Sep 2013, 01:33
Contact:

Re: Wie funktioniert's?

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
[AHK] v2.0.5 | [WIN] 11 Pro (Version 22H2) | [GitHub] Profile
User avatar
nnnik
Posts: 4500
Joined: 30 Sep 2013, 01:01
Location: Germany

Re: Wie funktioniert's?

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.
Recommends AHK Studio
Folllast
Posts: 91
Joined: 24 Jan 2018, 04:57

Re: Wie funktioniert's?

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?
just me
Posts: 9453
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Wie funktioniert's?

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

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 85 guests