Me di cuenta de que la función Remove From() no funciona según lo previsto (y su documentación está mal escrita tanto en Scripting Index como en JMP Help). Parece comportarse irracionalmente cuando se elimina el último elemento de la lista.
Me he puesto en contacto con el soporte de JMP sobre esto. Según ellos, el comportamiento previsto es el siguiente (igual que esperaría que fuera):
El comportamiento esperado es que Remove From devuelve los elementos eliminados como muestra su ejemplo para los primeros 9 elementos.Además, modifica el contenedor de entrada eliminando los elementos.
Todavía tengo que recibir noticias de ellos si saben acerca de la línea de tiempo cuando esto se solucionará y la documentación se actualizará. Informaré aquí si recibo una respuesta con la línea de tiempo.
Ejemplo y una "solución alternativa" (si realmente necesito el mismo comportamiento que Eliminar de, escribiré mi propia función por ahora):
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^"));
);
Gracias por informar esto.Tenga en cuenta que este error se aplica a las llamadas a RemoveFrom() utilizadas en un vector (matriz) y no se aplica a los contenedores de listas.
Su solución parece razonable para los vectores.Si usa esta solución alternativa en una lista, tenga en cuenta que creará una copia del primer elemento.Para la mayoría de los tipos, esto estará bien: copiar un elemento que hace referencia a un cuadro de visualización, una tabla de datos o una plataforma simplemente creará otro símbolo que haga referencia al mismo objeto.Si los elementos de la lista contienen elementos como matrices grandes o matrices asociativas, creará una copia duplicada de este objeto.Es posible que esto tampoco tenga un gran efecto perceptible, pero la semántica de la solución alternativa es ligeramente diferente.