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.