Mir ist aufgefallen, dass die Remove From()-Funktion nicht wie beabsichtigt funktioniert (und ihre Dokumentation sowohl im Scripting Index als auch in der JMP-Hilfe falsch geschrieben ist). Es scheint sich irrational zu verhalten, wenn das letzte Element aus der Liste entfernt wird.
Ich habe mich diesbezüglich an den JMP-Support gewandt. Laut ihnen ist das beabsichtigte Verhalten wie folgt (so wie ich es erwarten würde):
Das erwartete Verhalten ist, dass Remove From die entfernten Elemente zurückgibt, wie Ihr Beispiel für die ersten 9 Elemente zeigt.Außerdem ändert es den Eingabecontainer, indem es das/die Element(e) entfernt.
Ich muss noch von ihnen hören, ob sie über den Zeitplan wissen, wann dies behoben und die Dokumentation aktualisiert wird. Ich werde mich hier wieder melden, wenn ich mit der Zeitleiste zurückhöre.
Beispiel und ein "Workaround" (wenn ich wirklich das gleiche Verhalten wie Remove From brauche, werde ich vorerst meine eigene Funktion dafür schreiben):
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^"));
);