Re: Pasar variables pasa el nombre de la variable en lugar del valor de la variableUna lista como {x, y} contiene los nombres de las variables, no sus valores. Algunas funciones JSL extraerán los valores; línea ({x1, y1}, {x2, y2}) por ejemplo.
La función EvalList acepta una lista con expresiones, tal vez tan simple como el nombre de una variable, las evalúa y devuelve una nueva lista, { 3, 4 }.
La función Insertar en nota que el valor que está insertando es una lista y desempaqueta la lista para obtener los elementos que se van a insertar. Es por eso que tiene una lista con un elemento que es otra lista de dos elementos: desea insertar la lista de dos elementos sin descomprimirla, por lo que la envuelve en una lista.
Pero ahora debe descubrir cómo hacer la lista de evaluación en la lista interna de la lista anidada. Puedes hacerlo, con algo como esto:
x=3;
y=4;
evallist({evallist({x,y})}) // {{3, 4}}
Aquí hay un atajo que es más fácil o más difícil de entender
x=3;
y=4;
aslist(x||y) // {{3, 4}}
AsList empaqueta la matriz en una lista y crea una lista de listas de elementos de fila; el || El operador de concatenación pone dos (o más) números juntos en una matriz de fila.
Re: Pasar variables pasa el nombre de la variable en lugar del valor de la variable¡Gracias por la explicación! Usar la lista de evaluación doble funcionó para mí.
Pasar variables pasa el nombre de la variable en lugar del valor de la variableUtilizando JMP 15.2.1.
Creo que debo tener un malentendido sobre cómo funcionan las variables en JSL. Me he encontrado con este problema varias veces y finalmente me gustaría entender qué estoy haciendo mal.
Tengo una función en la que hago algunos cálculos, almaceno los resultados en variables y luego intento insertar los resultados en una lista. Sé que las variables contienen los valores que quiero que tengan, pero cuando intento agregarlas a la lista, agrega el nombre de la variable a la lista en lugar del valor de la variable. Debido a que estas son variables definidas localmente, esto provoca errores fuera del alcance de esa función.
He intentado usar Eval/Eval List en cualquier lugar que se me ocurra, pero tampoco funciona.
¿Cómo puedo hacer que la lista devuelta contenga los valores dentro de las variables?
¡Gracias de antemano!
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;
Compartir y comunicar resultadosventanas