Hi zusammen 👋 ,
die folgende Fragestellung entstand nur aus Interesse heraus, nicht wirklich auf Grund eines wirklichen Problems.
In AutoIt nutzen wir Funktionen und "eigentlich" keine Objekt-Orientierung (OOP). Mir ist bewusst, das es bereits Ansätze zu OOP gibt und ich da auch mal genauer nachschauen könnte und werde, doch mal sehen was ihr so dazu meint. Was ich gern wissen möchte ist, ob man Funktionen als Methoden zu einem Objekt (im Beispielcode ist es eine Map) verwenden kann und falls ja, wie?
⚠ Folgend also der Pseudocode:
AutoIt
#AutoIt3Wrapper_AU3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7
#AutoIt3Wrapper_AU3Check_Stop_OnWarning=y
;~ --------------------------------------
;~ Disclaimer: Achtung Pseudocode!
;~ Es geht nur um eine Fragestellung,
;~ der Code wird so nicht funktionnieren.
;~ --------------------------------------
Global $mRectangle[]
_Main()
Func _Main()
$mRectangle.Width = 8
$mRectangle.Height = 4
ConsoleWrite($mRectangle.Width & @CRLF)
ConsoleWrite($mRectangle.Height & @CRLF)
ConsoleWrite(GetArea() & @CRLF)
ConsoleWrite(GetPerim() & @CRLF)
;~ Als Methoden kann man die Funktionen nicht verwenden.
;~ Könnte man dies irgendwie als Objekt mit Methoden umsetzen?
ConsoleWrite($mRectangle.GetArea2() & @CRLF)
ConsoleWrite($mRectangle.GetPerim2() & @CRLF)
EndFunc
Func GetArea() ; Flächeninhalt
Return $mRectangle.Width * $mRectangle.Height
EndFunc
Func GetPerim() ; Umfang
Return 2 * $mRectangle.Width + 2 * $mRectangle.Height
EndFunc
Func GetArea2() ; Flächeninhalt
Return this.Width * this.Height ; So oder so ähnlich ...
EndFunc
Func GetPerim2() ; Umfang
Return 2 * this.Width + 2 * this.Height ; So oder so ähnlich ...
EndFunc
Alles anzeigen
- Die ersten vier ConsoleWrite, Zeile 18 - 21, sind natürlich okay soweit.
- Danach habe ich versucht zu verdeutlichen was ich meine.
- Ich bin hier übrigens nicht an Maps oder so gebunden (kann auch ein Objekt sein).
- Die Funktionen (welche die Methoden des jeweiligen Objekts sein könnten) GetArea2 und GetPerim2 sollen aufzeigen wie ich mir dies vorstelle.
- Kann auch totaler Quatsch sein, da AutoIt dafür nicht strukturiert wurde, doch mit der Einführung von Maps damals, kam mir der Gedanke ob man da "nun" irgendwas in der Richtung machen kann oder nicht.
💡 Am Ende reine Spielerei, doch vielleicht mag jemand von euch seine 2 Cents (oder mehr) dazu hinterlassen 🤝 .
Viele Grüße
Sven