I'd like to write a function that runs different code based on a passed array parameter's type. NON-working example:
SuperStrict
Local ByteMap:Byte[5,15]
Local IntMap:Int[5,15]
ProcessArray ByteMap
ProcessArray IntMap
End
Function ProcessArray(arr:Object[,] Var)
If Not arr Then Return
If Byte[,](arr) Then Print "Bytes"
If Int[,](arr) Then Print "Ints"
If Long[,](arr) Then Print "Longs"
If Float[,](arr) Then Print "Floats"
If Double[,](arr) Then Print "Doubles"
EndFunction
Is there a way to do this?
A functional Object-based equivalent would be:
SuperStrict
Local ByteMap:TByte[5,15]
ByteMap[0,0] = New TByte
Local IntMap:TInt[5,15]
IntMap[0,0] = New TInt
ProcessArray ByteMap
ProcessArray IntMap
End
Function ProcessArray(arr:Object[,] Var)
If Not arr Then Return
If TByte(arr[0,0]) Then Print "Bytes"
If TInt(arr[0,0]) Then Print "Ints"
If TLong(arr[0,0]) Then Print "Longs"
If TFloat(arr[0,0]) Then Print "Floats"
If TDouble(arr[0,0]) Then Print "Doubles"
EndFunction
Type TByte
Field f:Byte
EndType
Type TInt
Field f:Int
EndType
Type TLong
Field f:Long
EndType
Type TFloat
Field f:Float
EndType
Type TDouble
Field f:Double
EndType
Basically, I want a generic function that handles all types rather than writing a function for every type: ProcessByteArray, ProcessIntArray, ProcessDoubleArray, etc.
|