So fügen Sie bestimmte Funktionen anstelle des gesamten Skripts einHallo,
Gibt es eine Möglichkeit, nur bestimmte Funktionen aus einer JSL-Datei zu importieren?
In Python können Sie beispielsweise schreiben: „from pandas import read_csv“, um nur die Funktion read_csv zu importieren. Derzeit importiere ich in JMP immer eine ganze JSL-Datei mit vielen darin definierten Funktionen, und ich denke, aus Gründen der Übersichtlichkeit (und möglicherweise der Leistung) wäre es besser, nur die Funktionen zu importieren, die ich benötige.
Danke
Richard
DatenzugriffBetreff: So fügen Sie bestimmte Funktionen anstelle des gesamten Skripts einTatsächlich funktioniert es, vielen Dank!Betreff: So fügen Sie bestimmte Funktionen anstelle des gesamten Skripts einTut mir leid, mein Fehler, beim Kopieren der Funktion wird eine Namensausdruck(-Funktion benötigt.Hier ist ein überarbeitetes Beispiel:
include.jsl:
f = function({x,y}, x + y);Skript zum Laden der Funktion:
names default to here(1);
//load the new file in a local here namespace
Eval( Eval Expr( local here(
include("included.jsl");
//Reference the original script's here namespace in this new here namespace
//Eval, Eval Expr, and Expr cause the namespace("here") to be evaluated
//outside of this 'local here' context.
//from the other.
ns = Expr( namespace("here") );
//copy and functions you want to keep
ns:f = Name expr( here:f );
) ) );
//Now functions are in here namespace
f(1,2);Betreff: So fügen Sie bestimmte Funktionen anstelle des gesamten Skripts einVielen Dank für Ihre Hilfe, das funktioniert definitiv für Funktionen ohne Argumente.
Leider tritt beim Versuch, eine Funktion mit zwei Argumenten zu importieren, ein Fehler auf. Der Fehler besagt, dass ich kein Argument gebe, wenn die Funktion zwei davon erfordert (was stimmt). Hier ist der Beispielcode:
names default to here(1);
MyRejet = 1;
Lot_nom = "G123456";
//load the new file in a local here namespace
Eval( Eval Expr( local here(
Include("include.jsl");;
//Reference the original script's here namespace in this local here namespace
//Eval, Eval Expr, and Expr cause the namespace("here") to be evaluated
//outside of this 'local here' context.
ns = Expr( namespace("here") );
print(ns);
//copy and functions you want to keep
ns:DataExtraction = here:DataExtraction;
) ) );
//Now functions are in this namespace
DataExtraction(Lot_nom, MyRejet);Wissen Sie, wo der Fehler liegt? Ich habe versucht, beim Kopieren der Funktionen Argumente anzugeben, aber das Problem scheint dadurch nicht gelöst zu werden.
Danke
Richard
Betreff: So fügen Sie bestimmte Funktionen anstelle des gesamten Skripts einIch kenne auch nichts so Einfaches wie Python, aber hier sind zwei Optionen, die die Arbeit erledigen:
Betrachten Sie eine Datei namens include.jsl:
a = function({}, 1);
b = function({}, 2);So laden Sie die Funktion direkt im Kontext Ihres Skripts:
names default to here(1);
//load the new file in a local here namespace
Eval( Eval Expr( local here(
include("included.jsl");
//Reference the original script's here namespace in this local here namespace
//Eval, Eval Expr, and Expr cause the namespace("here") to be evaluated
//outside of this 'local here' context.
ns = Expr( namespace("here") );
//copy and functions you want to keep
ns:a = here:a;
) ) );
//Now functions are in this namespace
a();
Oder um die Funktion in einem separaten Namespace zu behalten:
names default to here(1);
//create namespace to hold functions you want to keep from included file
ns = new namespace();
//load the new file in a local here namespace
Eval( Eval Expr( local here(
include("included.jsl");
//Reference the ns namespace in this new here namespace
ns = Expr( ns );
//pick and choose any functions you want to keep
ns:a = here:a
) ) );
//Now either call the functions from the ns namespace
ns:a();
//or copy them to the here namespace
a = ns:a;
a();
Betreff: So fügen Sie bestimmte Funktionen anstelle des gesamten Skripts einMir ist keine Möglichkeit bekannt, nur eine Teilmenge aus einer Include-Datei einzubinden.