Salut les gars,
J'essaie d'ajouter une nouvelle valeur (valeur variable) à une liste à l'intérieur d'une fonction, chaque fois que la fonction a été appelée.
Peu importe ce que j'ai essayé, la liste n'a aucune valeur.
Un conseil ?
Ajout de l'exemple du code
Je pense que c'est une meilleure idée de renvoyer la nouvelle colonne, puis de l'ajouter en dehors de l'appel de fonction
Names Default To Here(1);
dt = Open("\\VMSPFSFSLC001\F28_PLI\SQL\FE SQL\Data\Oxide .CSV");
op_list = List();
add_new_operation = Function({dt, col_name, op, PLmin, PLmax}, {Default Local},
new_col = dt << New Column(col_name,
Character,
"Nominal",
Formula(
If(/*some conditions for the value*/
)
)
);
return(new_col);
);
sticol = add_new_operation(dt, "STI", 201405, 80, 2000);
Insert Into(op_list, sticol);
Show(op_list);
// This should also work
// Insert into(op_list, add_new_operation(dt, "STI", 201405, 80, 2000));
Exemple complet
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
op_list = {};
add_new_operation = Function({dt, col_name}, {Default Local},
new_col = dt << New Column(col_name,
Character,
"Nominal",
Formula(
col_name
)
);
return(new_col);
);
Show(op_list); // op_list = {};
Insert into(op_list, add_new_operation(dt, "name"));
Insert into(op_list, add_new_operation(dt, "age"));
Show(op_list); // op_list = {Column("name 2"), Column("age 2")};
Et si vous voulez vraiment insérer dans la liste créée en dehors de la fonction, supprimez {Default Local} de votre fonction (il existe également d'autres méthodes) mais je ne le recommanderais pas. L'une des raisons étant que vous devez désormais toujours créer op_list avant l'appel de la fonction.
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
op_list = {};
add_new_operation = Function({dt, col_name},
new_col = dt << New Column(col_name,
Character,
"Nominal",
Formula(
col_name
)
);
Insert Into(op_list, new_col);
);
Show(op_list); // op_list = {};
add_new_operation(dt, "name");
add_new_operation(dt, "age");
Show(op_list); // op_list = {Column("name 2"), Column("age 2")};