Re: 変数を渡すと、変数値の代わりに変数名が渡されます{ x, y } のようなリストには、値ではなく変数の名前が含まれます。 一部のJSL関数は値を掘り出します。たとえば、line( {x1, y1}, {x2, y2} ) です。
EvalList 関数は、変数名と同じくらい単純な式を含むリストを受け取り、それらを評価して、新しいリスト { 3, 4 } を返します。
Insert Into 関数は、挿入する値がリストであることを認識し、リストを展開して挿入する要素を取得します。 2 つの要素の別のリストである 1 つの要素を持つリストがあるのはそのためです。2 つの要素のリストをアンパックせずに挿入したいので、リストでラップします。
しかし、ネストされたリストの内側のリストで評価リストを実行する方法を理解する必要があります。 次のようなものでそれを行うことができます:
x=3;
y=4;
evallist({evallist({x,y})}) // {{3, 4}}
これは、理解しやすい、または理解しにくいショートカットです
x=3;
y=4;
aslist(x||y) // {{3, 4}}
AsList は行列をリストにアップパックし、行要素のリストのリストを作成します。 ||連結演算子は、2 つ (またはそれ以上) の数値を行行列にまとめます。
Re: 変数を渡すと、変数値の代わりに変数名が渡されます説明ありがとう! ダブルエバリストを使用するとうまくいきました。
変数を渡すと、変数値の代わりに変数名が渡されますJMP 15.2.1 を使用します。
JSL で変数がどのように機能するかについて誤解があると思います。この問題に何度か遭遇しましたが、最終的に何が間違っているのかを理解したいと思います。
いくつかの計算を実行し、結果を変数に保存し、結果をリストに挿入しようとする関数があります。 変数に必要な値が含まれていることはわかっていますが、変数をリストに追加しようとすると、変数の値ではなく変数名がリストに追加されます。 これらはローカルに定義された変数であるため、その関数の範囲外でエラーが発生します。
思いつく限りどこでも Eval/Eval List を使用してみましたが、それも機能しません。
返されたリストに変数内の値を含めるにはどうすればよいですか。
前もって感謝します!
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;
結果の共有と伝達ウィンドウズ