One of the things that Xojo lacks is the notion of generics.
So what are these things and why would they be useful ?
In many programming languages you might want to define a class that behaves like a List. But you want to be able to make this generic enough that when you go to use one you can make a List of Strings, a List of Classes, a List of controls etc.
Right now the only way to do this in Xojo is to make all the the parameters and return values be variants in the interface definition. The downside to this is that you lose all compile time type checking and have to rely solely on runtime checks YOU put in the code.
If you could declare a List variable like
Dim myStringList as List<String>
This would indicate that the list should use String as the “generic type” for all the method parameters and return types. The interface declaration might have to change to something like
Interface List<Type>
Sub AddRow(ParamArray values() as <Type>)
End Sub
Sub AddRowAt(ParamArray values() as <Type>, zeroBasedInxed as integer)
End Sub
Sub FirstRowIndex() as integer
End Sub
Sub LastAddedRowIndex() as integer
End Sub
Sub LastRowIndex() as integer
End Sub
Sub RemoveAllRows()
End Sub
Sub RemoveRowAt(zeroBasedIndex as integer)
End Sub
Sub RowCount() as integer
End Sub
Sub RowTag() as Variant
End Sub
Sub RowTagAt(zeroBasedIndex as integer) as <Type>
End Sub
Sub RowValue() as <Type>
End Sub
Sub RowValueAt(zeroBasedIndex as integer) as <Type>
End Sub
Sub SelectedRowCount() as Integer
End Sub
Sub SelectedRowIndex() as integer
End Sub
End Interface
And now we have a generic interface AND a way to define a list that will, at compile time, have a specific and known type so the compiler can detect any incompatible type errors.
This would make interfaces even more useful than they are now.