Comment inclure des fonctions spécifiques au lieu d'un script entierBonjour,
Existe-t-il un moyen d'importer uniquement des fonctions spécifiques à partir d'un fichier JSL ?
Par exemple en python vous pouvez écrire : "from pandas import read_csv" pour importer uniquement la fonction read_csv. Actuellement, dans JMP, j'importe toujours un fichier JSL entier contenant de nombreuses fonctions définies, et je pense qu'il serait préférable d'importer uniquement les fonctions dont j'ai besoin pour des raisons de clarté (et peut-être de performances).
Merci
Richard
Accès aux donnéesRe : Comment inclure des fonctions spécifiques au lieu d'un script entierEn effet ça marche, merci beaucoup !Re : Comment inclure des fonctions spécifiques au lieu d'un script entierDésolé mon erreur, un nom expr( fonction est nécessaire lors de la copie de la fonction.Voici un exemple révisé :
inclus.jsl :
f = function({x,y}, x + y);Script pour charger la fonction :
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);Re : Comment inclure des fonctions spécifiques au lieu d'un script entierMerci pour votre aide, cela fonctionne définitivement pour les fonctions sans aucun argument.
Malheureusement, je rencontre une erreur lorsque j'essaie d'importer une fonction avec deux arguments, l'erreur indique que je ne donne aucun argument lorsque la fonction en nécessite 2 (ce qui est vrai). Voici l exemple de code:
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);Savez-vous où est l'erreur ? J'ai essayé de spécifier des arguments lors de la copie des fonctions, mais cela ne semble pas résoudre le problème.
Merci
Richard
Re : Comment inclure des fonctions spécifiques au lieu d'un script entierJe ne connais rien d'aussi simple que python, mais voici deux options qui permettent de faire le travail:
Considérez un fichier appelé inclus.jsl :
a = function({}, 1);
b = function({}, 2);Pour charger la fonction directement dans le contexte de votre script :
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();
Ou, pour conserver la fonction dans un espace de noms séparé :
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();
Re : Comment inclure des fonctions spécifiques au lieu d'un script entierJe ne connais aucun moyen d'inclure uniquement un sous-ensemble à partir d'un fichier d'inclusion.