Re : Passer des variables passe le nom de la variable au lieu de la valeur de la variableUne liste comme { x, y } contient les noms des variables, pas leurs valeurs. Certaines fonctions JSL creuseront les valeurs ; ligne( {x1, y1}, {x2, y2} ) par exemple.
La fonction EvalList accepte une liste avec des expressions, peut-être aussi simples qu'un nom de variable, les évalue et renvoie une nouvelle liste, { 3, 4 }.
La fonction Insérer dans remarque que la valeur qu'elle insère est une liste et décompresse la liste pour obtenir les éléments à insérer. C'est pourquoi vous avez une liste avec un élément qui est une autre liste de deux éléments : vous voulez insérer la liste de deux éléments sans la décompresser, vous l'enveloppez donc dans une liste.
Mais maintenant, vous devez comprendre comment faire la liste d'évaluation sur la liste interne de la liste imbriquée. Vous pouvez le faire, avec quelque chose comme ceci:
x=3;
y=4;
evallist({evallist({x,y})}) // {{3, 4}}
Voici un raccourci plus ou moins facile à comprendre
x=3;
y=4;
aslist(x||y) // {{3, 4}}
AsList regroupe la matrice dans une liste et crée une liste de listes d'éléments de ligne ; le || L'opérateur de concaténation rassemble deux nombres (ou plus) dans une matrice de lignes.
Re : Passer des variables passe le nom de la variable au lieu de la valeur de la variableMerci pour l'explication! L'utilisation du double évaluateur a fonctionné pour moi.
Passer des variables passe le nom de la variable au lieu de la valeur de la variableUtilisation de JMP 15.2.1.
Je pense que je dois avoir une mauvaise compréhension du fonctionnement des variables dans JSL. J'ai rencontré ce problème à quelques reprises et j'aimerais enfin comprendre ce que je fais de mal.
J'ai une fonction dans laquelle je fais des calculs, stocke les résultats dans des variables, puis tente d'insérer les résultats dans une liste. Je sais que les variables contiennent les valeurs que je veux, mais lorsque j'essaie de les ajouter à la liste, le nom de la variable est ajouté à la liste au lieu de la valeur de la variable. Étant donné qu'il s'agit de variables définies localement, cela provoque alors des erreurs en dehors de la portée de cette fonction.
J'ai essayé d'utiliser Eval/Eval List partout où je peux penser mais cela ne fonctionne pas non plus.
Comment puis-je faire en sorte que la liste renvoyée contienne les valeurs dans les variables.
Merci d'avance!
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;
Partage et communication des résultatsles fenêtres