Function name in variable

BlitzMax Forums/BlitzMax Beginners Area/Function name in variable

You could also use a Hashtable or the TMap like this very generic example:
Type TFunction
	Field Func:Int( args:Object[])
EndType

Global Functions:TMap = New TMap

Function AddFunction( name:String, func:Int( args:Object[]))
	Local fn:TFunction = New TFunction
	fn.Func = func
	Functions.Insert( name, fn)
EndFunction

Function CallFunction:Int( name:String, args:Object[] = Null)
	Local fn:TFunction = TFunction( Functions.ValueForKey( name))
	If fn Then Return fn.Func( args)
	Return False
EndFunction

'
' TEST
'
AddFunction( "test", TestFunction)
CallFunction( "test")
CallFunction( "test", ["testing, testing"])

Function TestFunction:Int( args:Object[])
	If args.Length = 1 Then
		Print "Hello from TestFunction( ~q" + args[0].ToString() + "~q)"
	Else
		Print "Hello from TestFunction()"
	EndIf
EndFunction