Hi,
gibt es die Möglichkeit Funktionen in GLBasic zu überladen? Ich bekam bei einem Experiment nämlich:
"librun.gbas"(74) error : a sub/fkt is defined twice : LIB_setBackground
LG
W.
nein, gibt's nicht.
Dann helfe ich mir anders aus! Danke für die Info!
mit
CALLBACK FUNCTION func:
kannst du eine Funktion ja zumindest einmalig neu definieren
Ich dachte da an:
// Default
func ()
// 1 Argument
func (arg1)
// 2 Argumente
func (arg1, arg2)
Aber egal, ich habe es inzwischen verschachtelt gelöst --> select
Funktioniert genauso gut, ist also kein Problem! =D
FUNCTION Blub: arg1, arg2 = 0, arg3 = 0, arg4 = 0, arg5 = 0
//.... tu was du nicht lassen kannst
ENDFUNCTION
Blub(1)
Blub(1,2)
Blub(1,2,3)
usw...
bzw. Wenns immer Zahlen sind:
Blub(was%, arg1, arg2 ... )
in der FUNCTION dann
SELECT was
CASE 1 // arg1 und 2 sind positionen
//...
CASE 2 // arg 1 und 2 und 3 sind 3D-Positionen
und den Rest kennst ja
Wenn Du es ganz krass haben willst, mach es so (nicht unbedingt ernst gemeint^^). xD
LOCAL test AS TCrazyTest
LOCAL params$[]
DIM params$[2]
params$[0] = 10
params$[1] = 54
test.CallFunction("func2", params$[])
//omg!
PROTOTYPE GlobalFunction: params$[]
FUNCTION func1: params$[]
//blub
ENDFUNCTION
FUNCTION func2: params$[]
IF LEN(params$[]) = 2
DEBUG params$[0] * params$[1]
ELSE
DEBUG "nonono"
ENDIF
ENDFUNCTION
FUNCTION func3: params$[]
//blub
ENDFUNCTION
TYPE TCrazyTest
func AS GlobalFunction
FUNCTION CallFunction: name$, params$[]
SELECT name$
CASE "func1"
self.func = func1
CASE "func2"
self.func = func2
CASE "func3"
self.func = func3
ENDSELECT
IF self.func = TRUE THEN self.func(params$[])
ENDFUNCTION
ENDTYPE
Quote from: Schranz0r on 2012-May-25
FUNCTION Blub: arg1, arg2 = 0, arg3 = 0, arg4 = 0, arg5 = 0
//.... tu was du nicht lassen kannst
ENDFUNCTION
Interessant! Diese/n Methode/Weg kannte ich gar nicht! Muß ich heute gleich mal testen! Danke für den Tip! :good:
EDIT:
Hat super funktioniert! Danke für die Hilfe!
Ich trinke Bier, du kennst das Spiel ja ;D