JSLのヒント:複数の割り当て見過ごされがちなJMPスクリプト言語の機能の1つは、1つの割り当てステートメントで複数の変数に値を割り当てることができることです。基本的な例は次のとおりです。
// xに1、yに100を割り当てる
{x、y} = {1、100};
この構文は、変数の値が以前の値に依存している場合に特に便利です。たとえば、2つの変数の値を交換する簡単な(そして速い)方法は、次のとおりです。
// xとyを入れ替える
{x、y} =評価リスト({y、x});
ここでは、多重代入の利点を見ることができます。それがなければ、一時変数を追加して3つの代入文を使用する必要があります。評価リストデフォルトでは、JMPがリストを評価するときにリストメンバーを評価しないためです。
もう1つの用途は、相互に従属する2つ以上の変数に対して反復計算を実行しているときです。ユークリッド最大公約数アルゴリズムはそのような計算の1つです。
// 2つの整数の最大公約数
gcd =関数({a、b}、
while(b!= 0、
{a、b} =評価リスト({b、Mod(a、b)});
;
ある
;
gcd(45、60); // 15
を挿入見せる(a、b) アルゴリズムがどのように機能するのかを監視するための代入の後のステートメント。
Mark Baileyはこう書いています。マークベイリー書きました:
私はリストがL値として役立つことができることを知ったので、私はしばしばこのイディオムを使います。リストは効率的でコンパクトでありながら読みやすいコードを作ります。これが私の一般的な使い方の2つです。
//平均の信頼区間
サンプルN = 10。
sample = J(sample N、1、Random Normal(10、1));
yBar =平均値(サンプル)。
sdY = Std Dev(サンプル)。
{lo95%CI、hi95%CI} = Round(
yバー+ {-1、1} t分位数(0.975、サンプルN-1) sdY / Sqrt(sampleN)
2
;
表示(lo 95%CI、hi 95%CI)。
// y軸スケール
{yMin、yMax} = Round(
yBar + { - 4.5、4.5} *(最大(サンプル) - 最小(サンプル))、
1
;
(yMin、yMax)を表示します。