PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Manière idiomatique d’obtenir le dernier élément d’un tableau
Manière idiomatique d’obtenir le dernier élément d’un tableau
Iniciado por mathieu.lovato-stumpf-guntz, 17,sep. 2020 17:26 - 11 respuestas
Publicado el 17,septiembre 2020 - 17:26
Bonjour,

Découvrant Windew et le Wlangage, je cherche à connaître la manière idiomatique de récupérer le dernier élément d’un tableau.

Ceci fonctionne:

exemple[exemple.Occurrence()]

Mai pour une fonction aussi basique, peut-être existe-il quelque chose de plus laconique ? « exemple[-1] » ou « exemple.dernier » ne semblent pas être des options fonctionnels. Existe-t-il autre chose ?

Par avance merci
Miembro registrado
4.365 mensajes
Publicado el 17,septiembre 2020 - 17:47
Bonjour,
Si tu parles d'une variable Tableau :
[code]
tabMonTableau[tabMonTableau.Occurence()]
[

--
Il y a peut être plus simple, mais, ça tourne
Miembro registrado
1.173 mensajes
Publicado el 17,septiembre 2020 - 22:27
Bonsoir,

tabMonTableau[tabMonTableau..Occurrence]


--
Thierry TILLIER
Développeur Windev-Webdev
Formation Windev : https://coursdinfo.teachable.com/
Formation bureautique : https://coursdinfo.net
Publicado el 18,septiembre 2020 - 10:06
Bonjour, merci Voroltinquo et Thierry pour vos réponses.

Oui, c’est bien un tableau auquel je fais référence.

Donc ceci donne bien le résultat attendu :
tabMonTableau[tabMonTableau.Occurence()]


Par contre, je suis un peu étonné de la verbosité d’une fonctionnalité aussi courante pour les algorithmes.

À défaut d’une fonctionnalité de base, est-il possible d’étendre les méthodes de la structure des tableaux, pour obtenir la possibilité d’écrire quelque chose comme :

tabMonTableau.dernier()
Miembro registrado
1.173 mensajes
Publicado el 20,septiembre 2020 - 00:24
Occurrence signifie nombre d'éléments, il est donc bien adapté pour désigner à la fois le dernier indice et le nombre d'éléments.

--
Thierry TILLIER
Développeur Windev-Webdev
Formation Windev : https://coursdinfo.teachable.com/
Formation bureautique : https://coursdinfo.net
Miembro registrado
4.365 mensajes
Publicado el 20,septiembre 2020 - 10:24
msg a écrit :
Par contre, je suis un peu étonné de la verbosité d’une fonctionnalité aussi courante pour les algorithmes.

Dans un algorithme, la plupart du temps, le dernier indice est traité comme un autre, c'est ce qui se passe après sont traitement qui diffère.
Par ailleurs, on n'a qu'une fonction, quel que soit le type de variable. C'est quand même plus simple que :
MonTableau[(siszeof(MonTableau)/sizeof(*MonTableau))-1]

.... et encore, cela ne te donne que l'indice max

--
Il y a peut être plus simple, mais, ça tourne
Miembro registrado
334 mensajes
Publicado el 20,septiembre 2020 - 11:14
N’empêche que parcourir l’index courant d’un tableau avec des .premier .suivant .précédent et .dernier me semblerai plus pratique, je suis même surpris que PCSOFT, ne l’ai jamais implémenté !

--
———————————————————————————————————
Ce qui se conçoit bien se code clairement et se débogue facilement...

- Pastiche d’une citation de Nicolas Boileau -
Miembro registrado
4.365 mensajes
Publicado el 20,septiembre 2020 - 11:26
Connais-tu un langage qui le fait ?

--
Il y a peut être plus simple, mais, ça tourne
Miembro registrado
4.365 mensajes
Publicado el 20,septiembre 2020 - 11:31
Après rien ne t’empêche de créer une classe qui le fait ....

--
Il y a peut être plus simple, mais, ça tourne
Miembro registrado
197 mensajes
Publicado el 20,septiembre 2020 - 20:24
Bonjour

oui une syntaxe comme en python ce serait pas mal:
a[-1] renvoie le dernier élément du tableau a
a[-2] l'avant dernier

bien pratique à l'usage
Publicado el 22,septiembre 2020 - 10:47
// C#
[1, 2, 3].Last()

// Julia
last([1, 2, 3])

// Ruby
[1, 2, 3].last


Liste non exhaustive,évidemment. La plupart des langages populaires offrent un équivalent, parfois via une fonction/méthode d’un nom un peu différent (end, slice, tail…), potentiellement à instruire d’un paramètre idoine (1, -1…). Parfois ces mécanismes ne sont pas accessibles sur des tableau statiques (d’ailleurs je n’ai pas vérifié pour C#).
Publicado el 22,septiembre 2020 - 10:52
Je n’ai pas encore vu la manière de structurer les classes en Wlangage. Est-ce que la classe tableau (si cette structure est implémenté comme une classe) peut être étendu en y rajoutant une méthode "dernier" ? Si oui, comment ? Si non, est-ce qu’une classe peut être dérivé de la structure "tableau" en héritant de toutes ses propriétés et en y ajoutant cette méthode, et dans ce cas comment s’y prendre ?