スクリプトはループ内で1回だけ実行されるこんにちは、
以下のスクリプトは、2つのリストにあるファイルをループ処理して、どちらが一致するかを確認します。もしそうであれば、'tagger'関数を使ってファイルを操作します。私はその機能をテストするためにGUI用にこのコードを作成しました。私は4つのファイル(lf用に2つとlg用に2つ)を選択しました。問題は、条件がtrueと評価された場合、'tagger'スクリプトは、4つの一致するファイルすべてではなく、一致する2つのファイルのうち最初のファイルに対してのみ実行されることです。私が何かを逃していたかどうか疑問に思いましたか?
commenceTaggingScript2 = Expr(
For(p = 1, p <= n items(lf), p++,
For(q = 1, q <= nitems(lg), q++,
if (Left(lf[p], Length(lf[p]) - 4) == Left(lg[q], Length(lg[q]) - 8), print("Sliced Lf: " || Left(lf[p], Length(lf[p]) - 4)); print("Sliced lg: " || Left(lg[q], Length(lg[q]) - 8)); tagger(selectedDirlf || lf[p], selectedDirlg || lg[q]) , print("Not matching"));
);
);
);
再:スクリプトはループ内で一度だけ実行される以下のテストデータを追加した後、あなたのコードは私のために働きました(JMP 13とJMP 14を試してみました):
tagger = function({a, b}, print("tagging", a, b));
lf = {"abc1234", "xyz"};
lg = {"abc12345678", "xyz12345678"};
selectedDirlf = "/LF/";
selectedDirlg = "/LG/";
commenceTaggingScript2;
つまり、4つの比較のうち2回はtaggerが呼び出されています。
"Lfのスライス:abc"
"スライスされたlg:abc"
「タグ付け」
"/ LF / abc1234"
"/ LG / abc12345678"
「一致しない」
「一致しない」
"Lfのスライス:xyz"
"スライスされたlg:xyz"
「タグ付け」
"/ LF / xyz"
"/ LG / xyz12345678"