NESTEDカスタム関数を数式で使用できるようにするこんにちは、みんな、
私は、温度と圧力に基づいていくつかの複雑な計算を行うために追加を構築しようとしています。
私のアプローチは、スクリプトを作成してから、これを非表示のアドインに添付することです。 次に、グローバル:myfunc()を介した数式で、プラグインの数式を使用します。
スクリプトに単一の関数がある場合、このアプローチは機能します(トピックを見る)。
ただし、1つのjslスクリプトに2つのネストされた関数がある場合。 このアプローチはもう機能しません。
これが私のjslスクリプトです:
myfun1 = Function({x},
a = x+10;
Return(a);
);
myfun2 = Function({x},
b = myfun1(x)+10;
Return(b);
);したがって、実際に実行したいのは、数式エディターからmyfun2を次のように呼び出すことです。

しかし、次のエラーが発生します。

これを行う方法はありますか?
Re:NESTEDカスタム関数を数式で使用できるようにするヒントをありがとう、それは今魅力のように機能します! 
私はそれを考えました:
<SPAN class="token function">names default to here</SPAN><SPAN class="token punctuation">(</SPAN><SPAN class="token number">1</SPAN><SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
この場合は十分でした。 名前空間を明確に指定する必要がある理由がわかりました。
Re:NESTEDカスタム関数を数式で使用できるようにするJMP 14を使用していない場合は、すべての関数を別の名前空間に作成することをお勧めします。これにより、すべてのデータテーブルとスクリプトで関数を使用できるようになります。アドインを構造化して、jmpstartup.jslスクリプトを実際に変更し、名前空間を作成してすべての関数を設定することもできます。これにより、誰かがJMPを起動するたびに関数が自動的に使用可能になります。
names default to here(1);
GlobalFunction=new namespace("GlobalFunction");
GlobalFunction:ShowValue = Function({x},show(x));
zippy=10;
GlobalFunction:ShowValue(zippy)Re:NESTEDカスタム関数を数式で使用できるようにするこんにちは、返信ありがとうございます。
問題は、添付のサンプルスクリプトよりも少し複雑です。 私が本当に作りたいスクリプトは30以上の関数で構成されており、そのうちのいくつかは他のいくつかを呼び出します。
このスクリプトは、JMPアドインを介して他の人が利用できるようにするという考え方です。 したがって、アドインがインストールされている場合は、任意のテーブルからいつでも機能にアクセスできます。
基本的に、呼び出すことができる関数を含むpython /C++クラスに相当するものが必要です。
私が知りたいのは、列の数式からどのように機能させるのかということです。
スクリプト内でmyfun2を呼び出しても、エラーは発生しません。 しかし、私はそれをから実行するときにそれを持っています列式。
また、JMP14では、独自のコスチューム式を導入することが公式にサポートされていることも知っています(リンク)。
私はこれが可能であると確信しています。それはjsl/JMPでそれを適切に行う方法の問題であり、それはまさに私の質問です。
Re:NESTEDカスタム関数を数式で使用できるようにするJMPを閉じてからそのテーブルを再度開くと、関数名が未定義になるため、これらの列の数式が壊れてしまうため、列の数式でカスタムのユーザー定義関数を使用する場合は注意が必要です。たぶんそれはここでは問題ではありませんが、私がそれを指摘すると思っただけです。
これにアプローチする方法はかなりあります。たとえば、式を使用してアプローチすることができます。または、myfun1とmyfun2の定義を列の数式に直接入力することもできます。
これは、これを数式に貼り付けるだけです。
myfun1 = Function( {x},
a = x + 10;
Return( a );
);
myfun2 = Function( {x},
b = myfun1( x ) + 10;
Return( b );
);
myfun2( 1 );