for ループ内での変数名の設定やあ、
name1、name2、... などの変数名を for ループで次のように設定するのが好きです。
name1 = ntable;
name2 ="A"||"_"||Flow[1];
name3 ="A"||"_"||Flow[2];
等々。
以下のスクリプトを作成したところ、エラーが発生しました。
name1 = ntable;
for (i=1, i<=Nitems, i++,
Eval(
Parse(
"name"||char(i+1) = "A" ||"_"|| Flow[i];
)
)
);
私はあなたの助けに感謝します。 ありがとう。
Re: for ループ内で変数名を設定するありがとうジェフ。 最後のスクリプトを試して、ファイルと listexcelsheet を名前に変更し、完全に機能しました。 ご支援いただきありがとうございます。
Re: for ループ内で変数名を設定するいったい何に苦労しているのですか? 理解できないエラーが表示されましたか? 上記のループはあなたのために働くことを示しました。
インデックス付きの JSL 変数名を作成する代わりに、リストを使用することを以前に提案しました。 ここに投稿したコードには、リストが機能しないことを示唆するものは何もありません。 代わりにリストを使用することを強くお勧めします。
flow = {"one", "two", "three", "four", "five"};
names = {};
files = {};
For( i = 1, i <= N Items( flow ), i++,
names[i] = "A_" || flow( i );
files[i] = Open( "$Documents/JMP/A_" || Flow[i] || ".jmp" );
Create Excel Workbook( "$Documents/JMP/" || product_name || "_" || one_stage || ".xlsx", files, listexcelsheet );
);Re: for ループ内で変数名を設定するどうもありがとうジェフ。 最初の部分を取得した後、もう少し助けが必要です。 以下は、正常に動作するスクリプトです。
If( Nitems == 5,
name1 = ntable;
name2 = "A" || "_" || Flow[1];
name3 = "A" || "_" || Flow[2];
name4 = "A" || "_" || Flow[3];
name5 = "A" || "_" || Flow[4];
name6 = "A" || "_" || Flow[5];
name1jmp = "$Documents/JMP/" || "A" || "_" || Flow[1] || ".jmp";
name2jmp = "$Documents/JMP/" || "A" || "_" || Flow[2] || ".jmp";
name3jmp = "$Documents/JMP/" || "A" || "_" || Flow[3] || ".jmp";
name4jmp = "$Documents/JMP/" || "A" || "_" || Flow[4] || ".jmp";
name5jmp = "$Documents/JMP/" || "A" || "_" || Flow[5] || ".jmp";
file1 = Open( ntablejmp );
file2 = Open( name1jmp );
file3 = Open( name2jmp );
file4 = Open( name3jmp );
file5 = Open( name4jmp );
file6 = Open( name5jmp );
listx = Eval List( {name1, name2, name3, name4, name5, name6} );
listexcelsheet = Eval List( {name1, name2, name3, name4, name5, name6} );
Create Excel Workbook( "$Documents/JMP/" || product_name || "_" || one_stage || ".xlsx", listx, listexcelsheet );
);
すべての Nitem で機能するように for ループを作成しようとしています。 私は MAC マシンを使用しているため、このようにしています。 いつもご利用いただきありがとうございます。
Re: for ループ内で変数名を設定するテクニックはまったく同じです。 式に解析して評価する文字列を構築しています。
混乱を招く可能性があるのは、以下の \!" です。 文字列に " を含める必要があるため、\! を使用してエスケープする必要があります。
flow = {"two", "three", "four"};
name1 = "A_one";
For( i = 1, i <= N Items( flow ), i++,
expr_string = "name" || Char( i + 1 ) || "jmp = \!"$Documents/JMP/" || "A_" || Flow[i] || ".jmp\!"";
Show( expr_string );
Eval( Parse( expr_string ) );
);Re: for ループ内で変数名を設定するありがとうジェフ。 どちらも問題なく動作しますが、私のコードはその定義に基づいているため、最初のものが好きです。 name1 の代わりに、定義するのも好きです
name1jmp = "$Documents/JMP/" || 「あ」 || "_" ||フロー[i] || 「.jmp」 ;
それを前のスクリプトに追加する方法を教えてください。 ありがとう
Re: for ループ内で変数名を設定する@txnelsonあなたの質問の解釈は私とは異なります。
変数名の一部としてインデックス番号を使用して、一連の JSL 変数を作成したいと思います。
それは可能ですが、Parse() を実行する前に式全体を文字列として構築する必要があります。
このような:
flow = {"two", "three", "four"};
name1 = "A_one";
For( i = 1, i <= N Items( flow ), i++,
Eval( Parse( "name" || Char( i + 1 ) || "= \!"A_" || flow[i] || "\!";" ) )
);
ただし、インデックスが組み込まれているリストまたは連想配列を使用する代わりに、これを行う理由がわかりません。
names = {};
names[1] = "A_one";
For( i = 1, i <= N Items( flow ), i++,
names[i + 1] = "A_" || flow[i]
);
Show( names[1], names[2], names[3], names[4] );
Re: for ループ内で変数名を設定する列の名前変更に正しい構文を使用していません。から直接取得した例を次に示します。
ヘルプ==>スクリプト インデックス==>コラム スクリプト
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
:Age << Set Name( "Time" );