J'ai remarqué que la fonction Remove From() ne fonctionne pas comme prévu (et sa documentation est mal écrite à la fois dans l'index de script et dans l'aide de JMP). Il semble se comporter de manière irrationnelle lorsque le dernier élément est supprimé de la liste.
J'ai contacté le support JMP à ce sujet. Selon eux, le comportement prévu est le suivant (le même que je m'attendrais à ce qu'il soit):
Le comportement attendu est que Supprimer de renvoie le ou les éléments supprimés, comme le montre votre exemple pour les 9 premiers éléments.De plus, il modifie le conteneur d'entrée en supprimant le ou les éléments.
Je n'ai pas encore entendu parler d'eux s'ils connaissent le calendrier lorsque cela sera corrigé et la documentation mise à jour. Je ferai un rapport ici si j'ai des nouvelles avec un calendrier.
Exemple et une "solution de contournement" (si j'ai vraiment besoin du même comportement que Remove From, j'écrirai ma propre fonction pour le moment):
Names Default To Here(1);
m = 1::10;
For Each({item}, m,
earlier_m = m;
// Returns: The original source with the items deleted.
// Doesn't this return deleted list (except when it is last element...)
removed = Remove From(m, 1);
Print(Eval Insert("^removed^ removed from ^earlier_m^"));
);
// workaround?
m = 1::10;
For Each({item}, m,
earlier_m = m;
removed = m[1];
Remove From(m, 1);
Print(Eval Insert("^removed^ removed from ^earlier_m^"));
);
Merci d'avoir signalé cela.Notez que ce bogue s'applique aux appels à RemoveFrom() utilisé sur un vecteur (matrice), et ne s'applique pas aux conteneurs de liste.
Votre solution de contournement semble raisonnable pour les vecteurs.Si vous utilisez cette solution de contournement sur une liste, gardez à l'esprit que vous créerez une copie du premier élément.Pour la plupart des types, cela ira - copier un élément qui référence une boîte d'affichage, une table de données ou une plate-forme créera simplement un autre symbole référençant le même objet.Si les éléments de la liste contiennent des éléments tels que de grandes matrices ou des tableaux associatifs, vous créerez une copie dupliquée de cet objet.Cela peut ne pas avoir un grand effet notable non plus, mais la sémantique de la solution de contournement est légèrement différente.