Sugerencia JSL: Múltiples AsignacionesUna característica a menudo pasada por alto del lenguaje de scripting JMP es la capacidad de asignar valores a múltiples variables en una sola declaración de asignación. Un ejemplo básico es:
// asigna 1 a x y 100 a y
{x, y} = {1, 100};
La sintaxis es especialmente útil cuando los valores de las variables dependen de valores anteriores. Por ejemplo, una manera fácil (y rápida) de intercambiar los valores de dos variables es:
// intercambiar x y y
{x, y} = Lista de evaluación ({y, x});
Aquí puedes ver la ventaja de la asignación múltiple. Sin él, tendrías que agregar una variable temporal y usar tres instrucciones de asignación. Lista de evaluación es necesario porque cuando JMP evalúa una lista, no evalúa a los miembros de la lista de forma predeterminada.
Otro uso es cuando está realizando un cálculo iterativo en dos o más variables mutuamente dependientes. De euclides máximo común divisor El algoritmo es uno de esos cálculos.
// El divisor común más grande de dos enteros
gcd = Función ({a, b},
mientras (b! = 0,
{a, b} = Lista de evaluación ({b, Mod (a, b)});
);
una
);
gcd (45, 60); // 15
Inserte un Mostrar (a, b) Declaración después de la asignación para ver cómo funciona el algoritmo.
Mark Bailey escribió: A menudo utilizo este lenguaje, ya que aprendí ... Mark Bailey escribió:
A menudo utilizo este lenguaje, ya que aprendí que las listas podrían servir como un valor-L. Las listas hacen un código eficiente y compacto pero legible. Aquí están dos de los usos comunes para mí:
// intervalo de confianza de la media
muestraN = 10;
muestra = J (muestra N, 1, normal aleatorio (10, 1));
yBar = Media (muestra);
sdY = Std Dev (muestra);
{lo95% CI, hi95% CI} = ronda (
yBar + {-1, 1} t cuantil (0.975, muestra N-1) sdY / Sqrt (sampleN),
2
);
Show (lo95% CI, hi95% CI);
// escala y eje
{yMin, yMax} = Ronda (
yBar + {-4.5, 4.5} * (Máximo (muestra) - Mínimo (muestra)),
1
);
Show (yMin, yMax);