やあみんな
関数が呼び出されるたびに、関数内のリストに新しい値 (変数値) を追加しようとしています。
何を試しても、リストに値が得られません。
何かアドバイスはありますか?
コードの例を追加する
新しい列を返して、それを関数呼び出しの外側に追加する方が良いと思います
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));
完全な例
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")};
また、関数の外部で作成されたリストに本当に挿入したい場合は、関数から {Default Local} を削除します (他の方法もあります)。ただし、これはお勧めしません。理由の 1 つは、関数が呼び出される前に op_list を常に作成する必要があるためです。
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")};