Hi!
Ich habe mir mal ein neues Sprach-Paradigma für AutoIt erdacht, also eine neue Art, Skripte zu verfassen. Man könnte ganz primitiv sagen, Funktionen werden zu Objekten, aber es gibt doch signifikante Unterschiede zum Arbeiten mit normalen AutoIt Funktionen. Also wie geht das ganze?
Grundlage des Ganzen ist natürlich eine Funktion, meine UDF. Sie ist extrem kompakt und schmeißt doch den ganzen Sinn des BASIC-Paradigmas AutoIts über den Haufen. Die Idee dahinter ist, ein Modul als Objekt darzustellen. Nehmen wir als Beispiel mal eine 2D-Engine. Normalerweise würde man die so aufrufen:
[autoit]$Handle = _Engine_Funktion(Par1, Par2, ..., ParN)
_Engine_Funktion2($Handle, Par1)
Nun ist das der UDF Standard, dem eigentlich jede AutoIt UDF folgt. Mit dem Object-CallBack-Functions-Global-Variables-Paradigm sieht das dann so aus (der Name lässt es vermuten):
[autoit]$oEngine = _Engine_StartUp()
$oEngine.Function1(Par1, Par2, ..., ParN)
$oEngine.Function2(Par1)
So - was bringt einem dieses Objekt-Gehabe nun? Erstens sieht es meiner Meinung nach sauberer und besser aus und zweitens muss der Nutzer keine Variablen mehr von Hand durchreichen, da alle Variablen global deklariert sind, welche für die Engine wichtig sind! Der Nutzer muss sich damit also schonmal nicht mehr befassen.
Update: Ich hab das Ganze etwas umgeschrieben. Die Funktionen werden nun automatisch erkannt und in ein Objekt geschrieben. Dazu braucht es nur einen Funktionsaufruf, bei dem ihr keine Parameter übergeben müsst. Die Objekt-Funktionen werden jetzt mit __o_ als Präfix verfasst. Mehrere Objekte gleichzeitig sind jetzt möglich und es wird danach auch aufgeräumt ^^. Beispiel im Anhang. (dnke an BuFix für seinen Beitrag.
Falls noch Fragen bestehen (ich glaube schon ^^) einfach schreiben.
(Das ist optional! Es funktioniert mit der aktuellen Stable und muss nicht genutzt werden - wer darin "keinen Sinn" sieht, muss es nicht nutzen. Ich zitiere hier mal name22: "Ich denke das könnte sich noch als nützlich erweisen. Mir fällt kein expliziter Verwendungszweck ein, aber es ist auf jeden Fall ziemlich cool . ")