Gambas 3/Gambas3LeLangage/L'orienté objet avec Gambas/Créer une collection personnalisée
Créer une collection personnalisée avec Gambas
modifierVous savez déjà instancier et utiliser l'objet Collection. Peut-être aurez-vous besoin un jour de créer une classe pour représenter une collection personnalisée ?
Si tel est le cas, il suffit de créer une classe qui contient un tableau ou une collection privée puis d'écrire les méthodes spéciales :
_next()
_get()
_put()
qui ont été prévues à cet effet. :-)
' Gambas class file
' GambasIterable
' En Gambas, il y a un itérateur implicite qui :
' - met Enum.Index à Null et qui
' - appelle _next()
' - appelle _get()
Private $col As New Collection
' _next() est une des méthodes spéciale de Gambas ...
' _next() renvoie un Variant qui est l'identifiant du prochain élément.
Public Function _next() As Variant
If IsNull(Enum.Index) Then
Enum.Index = 0 ' select first item ...
Else
Inc Enum.Index
Endif
If Enum.Index >= $col.Count Then
Enum.Stop
Return
Endif
Return $col[Enum.Index]
End
' _get() est une des méthodes spéciale de Gambas ...
' _get() renvoie un élément de la collection selon l'identifiant
Public Function _get(Index As Integer) As String
Return $col[CStr(Index)]
End
Public Sub _put(Value As Variant, Index As Integer)
If Index <= $col.Count Then
$col[CStr(Index)] = Value
Else
Error.Raise("Out of range or Wrong Key format (Integer wanted)!")
Endif
End