JSL提示:多項任務JMP腳本語言經常被忽視的特性是能夠在單個賦值語句中為多個變量賦值。一個基本的例子是:
//將1分配給x,將100分配給y
{x,y} = {1,100};
當變量的值取決於先前的值時,語法特別有用。例如,交換兩個變量值的簡單(快速)方法是:
//交換x和y
{x,y} =評估列表({y,x});
在這裡,您可以看到多項任務的優勢。沒有它,您必須添加一個臨時變量並使用三個賦值語句。評估列表是必需的,因為當JMP評估列表時,默認情況下它不會評估列表成員。
另一個用途是在對兩個或多個相互依賴的變量執行迭代計算時。歐幾里得最大公約數算法就是這樣一種算法。
//兩個整數的最大公約數
gcd =功能({a,b},
而(b!= 0,
{a,b} =評估列表({b,Mod(a,b)});
);
一個
);
gcd(45,60); // 15
插入一個顯示(a,b) 分配後的語句,以觀察算法的工作原理。
Mark Bailey寫道:我經常使用這個成語,因為我學習...馬克貝利中寫道:
我經常使用這個習語,因為我了解到列表可以作為L值。列表可實現高效,緊湊且可讀的代碼。以下是我的兩個常見用途:
//均值的置信區間
sampleN = 10;
sample = J(sampleN,1,Random Normal(10,1));
yBar =平均值(樣本);
sdY = Std Dev(樣本);
{lo95%CI,hi95%CI} = Round(
yBar + {-1,1} t分位數(0.975,樣品N-1) sdY / Sqrt(sampleN),
2
);
顯示(lo95%CI,hi95%CI);
// y軸刻度
{yMin,yMax} = Round(
yBar + {-4.5,4.5} *(最大(樣本) - 最小(樣本)),
1
);
顯示(yMin,yMax);