Extraire l'expressionJe suis un grand fan de Eval(Substitute(Expr(...), Expr(..), Expr(.)))
: )
Le seul inconvénient : les Expr(...), Expr(..), Expr(.)
... ce qui m'a amené à l'idée de subst() - substitut() 2.0 ... une fonction qui n'évalue pas ses arguments.
En jouant avec la gestion des expressions, j'ai remarqué que la logique souhaitée pour Subst() est assez proche de celle de Extract Expr() : pas besoin d'utiliser Expr(), et Name Expr() est appliqué partout où cela est possible :
Names Default to here(1);
// direct mode, no Expr necessary
Extract Expr(x^2 + y, x);// -> x
Extract Expr(x^2 + y, c);// no c in x^2 + y -> empty
// Name Expr mode
c=Expr(x^2);
Extract Expr(x^2 + y , c);// looks up c = x^2, find "x^2"" in x^2 +y
Merveilleux!
... jusqu'à :
Extract Expr(cc * d , cc); // -> cc
cc=Expr(x^2);
Extract Expr(cc * d, cc);// looks up cc = x^2 , so doesn't find cc in cc * d anymore
Dangereux ...
après avoir défini cc comme symbole avec un nom expr , est-il toujours possible d'utiliser c "littéralement" dans Extract Expr ?
Extract Expr(cc * d , Expr(cc)); // doesn't work
Extract Expr(Expr(cc) , Expr(cc)); // finds Expr(cc)
Extract Expr(cc , Name Expr(Expr(cc))); // -> empty
Extract Expr(Name Expr(Expr(cc)) , Name Expr(Expr(cc))); // finds Name Expr(Expr(cc)), argh!
même:
cc=Expr(x^2);
clear symbols(cc);
Extract Expr(cc * d , cc); //-> empty()
Automatisation et scriptsRe : Extraire l'exprpeut être:
utiliser une fonction personnalisée comme wrapper pour Extract Expr
Names default to here(1);
dummy=Function ({expression, pattern},
Extract Expr(expression, pattern);
);
cc = Expr(x^2);
dummy( Expr(cc+d), Expr(cc)); // -> ccRe : Extraire l'exprY a-t-il quelque chose pour lequel vous cherchez des réponses ? Avez-vous également lu le Guide de script sur les expressions Guide de script > Méthodes de programmation > Expressions avancées, macros et listes - Expressions avancées et en particulier les parties sur la façon dont elles sont évaluées ?
Re: Extraction ExprSur la page liée, je n'ai pas trouvé d'informations supplémentaires concernant ExtractExpr().
@jthi a écrit :
Cherchez-vous des réponses à quelque chose ?
comment s'assurer que JMP recherche bien cc dans l'expression cc * d ?
... même si cc est utilisé comme nom pour une autre expression, comme x^2.
Extract Expr(cc * d , cc); // -> cc
cc=Expr(x^2);
Extract Expr(cc * d, cc);// looks up cc = x^2 , so doesn't find cc in cc * d anymore
et plus généralement :
Une fonction personnalisée évalue TOUJOURS ses arguments – et via Expr(), on peut l'empêcher de le faire.
La fonction Extract Expr récupère TOUJOURS l' expression non évaluée associée à un nom (le cas échéant) avant de l'utiliser ; l'utilisateur peut-il empêcher cela ?
Les commandes de la plateforme sont souvent perturbées lorsque des noms sont utilisés comme arguments – et la fonction Eval pourrait résoudre ce problème.
Combien de catégories de gestion des arguments existe-t-il au total en JSL ? Y a-t-il une limite à ne pas franchir ?
Re : Extraire l'exprPourquoi utiliseriez-vous le même nom de variable à plusieurs endroits comme celui-là ?
Supprimer les symboles() et Effacer les symboles() ne sont pas identiques
Names Default To Here(1);
cc = Expr(x ^ 2);
Delete Symbols(cc);
Extract Expr(cc * d, cc);
Re: Extraire l'expressionMerci pour le lien.
Voir plus...Il semble que Extract Expr() fonctionne différemment selon la façon dont cc est défini. Pour utiliser cc littéralement, évitez de le réaffecter avec Expr() ou utilisez Name Expr() pour gérer soigneusement les symboles et éviter les problèmes d'évaluation. J'étais aux prises avec un article difficile, alors je me suis tourné vers
https://domypaper.com/ Le service était excellent. L'auteur était compétent, a suivi mes instructions avec soin et a livré un article bien organisé et de haute qualité. La communication s'est déroulée sans heurts et le document a été livré à temps. Je suis extrêmement satisfait des résultats et j'utiliserais certainement à nouveau ce service pour de futures missions.