Re: Il passaggio di variabili passa il nome della variabile anziché il valore della variabileUna lista come { x, y } contiene i nomi delle variabili, non i loro valori. Alcune funzioni JSL scaveranno i valori; linea( {x1, y1}, {x2, y2} ) per esempio.
La funzione EvalList accetta una lista con espressioni, magari semplici come il nome di una variabile, le valuta e restituisce una nuova lista, { 3, 4 }.
La funzione Inserisci in rileva che il valore che sta inserendo è un elenco e decomprime l'elenco per ottenere gli elementi da inserire. Ecco perché hai un elenco con un elemento che è un altro elenco di due elementi: vuoi inserire l'elenco di due elementi senza decomprimerlo, quindi lo avvolgi in un elenco.
Ma ora devi capire come fare l'elenco eval nell'elenco interno dell'elenco nidificato. Puoi farlo, con qualcosa del genere:
x=3;
y=4;
evallist({evallist({x,y})}) // {{3, 4}}
Ecco una scorciatoia più facile o più difficile da capire
x=3;
y=4;
aslist(x||y) // {{3, 4}}
AsList esegue l'uppacking della matrice in un elenco e crea un elenco di elenchi di elementi di riga; il || L'operatore di concatenazione mette insieme due (o più) numeri in una matrice di riga.
Ri: Il passaggio di variabili passa il nome della variabile anziché il valore della variabileGrazie per la spiegazione! L'uso del doppio evallist ha funzionato per me.
Il passaggio di variabili passa il nome della variabile anziché il valore della variabileUtilizzo di JMP 15.2.1.
Penso di dover avere un malinteso su come funzionano le variabili in JSL. Mi sono imbattuto in questo problema alcune volte e vorrei finalmente capire cosa sto facendo di sbagliato.
Ho una funzione in cui eseguo alcuni calcoli, memorizzo i risultati in variabili e quindi tento di inserire i risultati in un elenco. So che le variabili contengono i valori che desidero, ma quando provo ad aggiungerle all'elenco aggiunge il nome della variabile all'elenco invece del valore della variabile. Poiché si tratta di variabili definite localmente, ciò causa errori al di fuori dell'ambito di tale funzione.
Ho provato a utilizzare Eval/Eval List ovunque mi venga in mente, ma neanche questo funziona.
Come posso fare in modo che l'elenco restituito contenga i valori all'interno delle variabili.
Grazie in anticipo!
list = {{3,4}, {1,5}, {3,2}};
deltaX = 1;
deltaY = 2;
updateList = Function({cl, dx, dy},
{newX, newY},
newX = cl[1][1] + dx;
newY = cl[1][2] + dy;
show(newX);
Insert Into(cl, {{newX, newY}}, 1);
show(cl);
return(cl);
);
list2 = updateList(list, deltaX, deltaY);
show(list2);
//this errors because list2[1][1] contains newX instead of the value 4
//list2[1][1] + 1;
Condivisione e comunicazione dei risultatifinestre