Funktionen überladen

Previous topic - Next topic

WPShadow

Hi,

gibt es die Möglichkeit Funktionen in GLBasic zu überladen? Ich bekam bei einem Experiment nämlich:
Code (glbasic) Select

"librun.gbas"(74) error : a sub/fkt is defined twice : LIB_setBackground


LG

W.
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

Kitty Hello

nein, gibt's nicht.

WPShadow

Dann helfe ich mir anders aus! Danke für die Info!
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

Quentin

mit
Code (glbasic) Select

CALLBACK FUNCTION func:

kannst du eine Funktion ja zumindest einmalig neu definieren

WPShadow

Ich dachte da an:

Code (glbasic) Select

// 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
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

Schranz0r

Code (glbasic) Select
FUNCTION Blub: arg1, arg2 = 0, arg3 = 0, arg4 = 0, arg5 = 0
//.... tu was du nicht lassen kannst
ENDFUNCTION



Code (glbasic) Select
Blub(1)
Blub(1,2)
Blub(1,2,3)

usw...

bzw. Wenns immer Zahlen sind:
Code (glbasic) Select

Blub(was%, arg1, arg2 ... )


in der FUNCTION  dann

Code (glbasic) Select
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
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

backslider

Wenn Du es ganz krass haben willst, mach es so (nicht unbedingt ernst gemeint^^). xD
Code (glbasic) Select

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

WPShadow

#7
Quote from: Schranz0r on 2012-May-25
Code (glbasic) Select
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!
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

Schranz0r

Ich trinke Bier, du kennst das Spiel ja ;D
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard