Expression vs fonctionsJ'ai eu du mal à comprendre les différences. Il me semble, du moins en apparence, qu'ils accomplissent la même chose, mais en voyant comment vous pouvez choisir, il y a une différence quelque part. Si cela ne vous dérangeait pas de me donner l'explication stupide avec peut-être un exemple ou deux, je l'apprécierais grandement.
D
Re : Expression vs fonctionsMerci Marc,
J'ai ouvert un nouveau sujet sur la base des informations que vous avez pu fournir. Les fonctions sont certainement ce que j'avais besoin de comprendre car cela réduit considérablement les lignes de code dans mon script d'extraction de données.
Voici le lien https://community.jmp.com/t5/Discussions/How-to-loop-using-a-function/mp/74841
Re : Expression vs fonctionsEn plus d'utiliser la nature dynamique des expressions, je considère les expressions comme un autre moyen de créer une sous-routine. Je pourrais utiliser une fonction ou une expression comme sous-programme. Je préfère une expression lorsque je veux retarder l'évaluation, que je n'ai pas besoin de paramètres et que je n'ai pas besoin d'un résultat renvoyé. Je préfère une fonction utilisateur lorsque j'ai besoin de paramètres ou d'un résultat de retour.
Re : Expression vs fonctionsMerci pour l'information. J'ai plus de 6 scripts include() qui ne sont rien d'autre que des expressions. Je vais essayer la fonction maintenant..
Re : Expression vs fonctionsMon point de vue : les fonctions sont destinées au code qui sera récurrent.Les expressions servent à insérer du code dans un autre code.
Voici un exemple simplifié :
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
onewayFunc = function({dt,Yaxis, Xaxis}, {Default Local},
plot = dt << Oneway(
Y( eval(Yaxis) ),
X( eval(Xaxis) )
);
return(plot);
);
Yaxis = expr({Column("height"), Column("weight")});
Xaxis = expr(Column("sex"));
onewayFunc(dt,Yaxis,Xaxis);
Ce code pourrait être accompli sans expressions, mais en l'utilisant comme exemple.En général, je dirais toujours utiliser des fonctions, jusqu'à ce que vous rencontriez un cas limite où une expression fera le travail.
Les expressions ont également plusieurs fonctions d'assistance utiles, ce qui les rend utiles pour l'arithmatique et l'alégèbre :
Names Default To Here( 1 );
Simplify Expr( Expr( 2 * 3 * a + b * (a + 3 - c) - a * b ) );
//6 * a + 3 * b + -1 * b * c