COMPACTAGE D'UNE SÉRIE NUMÉRIQUE

Signaler
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
-
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/38804-compactage-d-une-serie-numerique

Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
70
on est d'accord ^^
Messages postés
170
Date d'inscription
jeudi 11 décembre 2003
Statut
Membre
Dernière intervention
24 janvier 2009

Oui, tester le type est une bonne alternative à un wrapper (pas ma solution préférée, mais une bonne idée, c'est sur).

Concernant le tri, c'est certes une bonne idée mais ma rêgle en matière de design applicatif est "A chacun son métier, et les vaches seront bien gardées", i.e une fonction pour chaque chose. C'est pourquoi dans la description de Compacte, il est bien indiqué qu'elle attend les données déjà triées.

Cependant, je suis d'accord avec toi que c'est une bonne idée de proposer un tri. Auquel cas, une bonne façon de faire serait à mon avis de créer une fonction de plus haut niveau (publique) qui appelerait (optionellement) une fonction de tri avant d'appeler Compacte (qu'on rendrait private).

En pseudo code, ca donnerait à peu près:

Public Function SuperCompacte(data, optional must_sort As Boolean) as string
if must_sort
Call my_sort( data ) ' call sort routine
endif
SuperCompacte = Compacte( data )
End Function

Private Function Compacte ( byval data) as string

Private Sub My_sort ( byref data)
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
70
un Wrapper, oui, sympatique...

tu peux aussi tester le type de parametre en entrée...

tableau, collection, etc

et peut etre même voir à trier les chiffres, en première étape du processus, afin de compacter au maxiumum (traitement optionnel)
Messages postés
170
Date d'inscription
jeudi 11 décembre 2003
Statut
Membre
Dernière intervention
24 janvier 2009

Re,
on peut aussi par exemple ecrire des wrapper (un peu moins efficace, mais très sympa à maintenir). Par exemple avec le ParamArray:

Private Function CompacteParamArray(ParamArray t() As Variant) As String
Dim cdata As Collection
Dim i As Long

Set cdata = New Collection
For i = LBound(t()) To UBound(t())
cdata.Add t(i)
Next i
CompacteParamArray = Compacte(cdata)
Set cdata = Nothing
End Function
Afficher les 6 commentaires