Impostazione di un nome di variabile all'interno di un ciclo forCIAO,
Mi piace impostare nomi di variabili come nome1, nome2,... in un ciclo for con la seguente disposizione:
name1 = ntable;
name2 ="A"||"_"||Flow[1];
name3 ="A"||"_"||Flow[2];
e così via.
Ho creato uno script seguente e ho ricevuto qualche errore:
name1 = ntable;
for (i=1, i<=Nitems, i++,
Eval(
Parse(
"name"||char(i+1) = "A" ||"_"|| Flow[i];
)
)
);
Apprezzo il vostro aiuto. Grazie.
Re: Impostazione di un nome di variabile all'interno di un ciclo forGrazie Jeff. Ho provato il tuo ultimo script e ho modificato i file e il foglio listexcel in nomi e funziona perfettamente. Grazie ancora per tutto il tuo supporto.
Re: Impostazione di un nome di variabile all'interno di un ciclo forCon cosa stai lottando esattamente? Ricevi un errore che non capisci? Ho mostrato i loop sopra che funzioneranno per te.
In precedenza ho suggerito di utilizzare un elenco invece di provare a creare nomi di variabili JSL indicizzate. Non vedo nulla nel codice che hai pubblicato qui che suggerisca che un elenco non funzionerà per te. Ti incoraggio vivamente a utilizzare invece gli elenchi.
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 );
);Ri: Impostazione di un nome di variabile all'interno di un ciclo forGrazie mille Jeff. Ho bisogno di un po' più di aiuto dopo aver ricevuto la prima parte. Ecco lo script che funziona bene di seguito:
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 );
);
Sto cercando di creare un ciclo for in modo che funzioni per qualsiasi Nitems. Sto usando una macchina MAC ed è per questo che è stato fatto in questo modo. Grazie per tutto il vostro continuo supporto.
Re: Impostazione di un nome di variabile all'interno di un ciclo forLa tecnica è esattamente la stessa. Stai costruendo una stringa che analizzerai in un'espressione e la valuterai.
Una cosa che potrebbe confonderti è \!" qui sotto. Poiché è necessario che la stringa contenga un " è necessario eseguirne l'escape utilizzando \!.
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: Impostazione di un nome di variabile all'interno di un ciclo forGrazie Jeff. Entrambi funzionano bene, ma mi piace il primo poiché il mio codice è basato su quella definizione. Invece di nome1, mi piace anche definire
nome1jmp = "$Documenti/JMP/" || "UN" || "_" || Flusso[i] || ".jmp" ;
Potete aiutarmi ad aggiungerlo allo script precedente? Grazie
Re: Impostazione di un nome di variabile all'interno di un ciclo for@txnelson interpreta la tua domanda in modo diverso da me.
Penso che tu voglia creare una serie di variabili JSL con un numero di indice come parte del nome della variabile.
Puoi farlo, ma dovrai creare l'intera espressione come una stringa prima di provare a Parse().
Come questo:
flow = {"two", "three", "four"};
name1 = "A_one";
For( i = 1, i <= N Items( flow ), i++,
Eval( Parse( "name" || Char( i + 1 ) || "= \!"A_" || flow[i] || "\!";" ) )
);
Tuttavia, non sono sicuro del motivo per cui vorresti farlo invece di utilizzare un elenco o un array associativo con l'indicizzazione incorporata.
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: Impostazione di un nome di variabile all'interno di un ciclo forNon stai utilizzando la sintassi corretta per rinominare una colonna.Ecco un esempio tratto direttamente da
Aiuto==>Indice script==>Script colonne
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
:Age << Set Name( "Time" );