Je voudrais extraire des arguments d'instances d'inégalité. Le suivant ne fonctionne pas, aucune idée pourquoi et comment le réparer?Inequality correspondant à un modèle
Inequality[1, Less, x, Less, 2] /. Inequality[a_, _, c_, _, e_] -> {a, c, e}
Je voudrais extraire des arguments d'instances d'inégalité. Le suivant ne fonctionne pas, aucune idée pourquoi et comment le réparer?Inequality correspondant à un modèle
Inequality[1, Less, x, Less, 2] /. Inequality[a_, _, c_, _, e_] -> {a, c, e}
Inequality[1,Less,x,Less,2] /. HoldPattern[Inequality[a_,_,b_,_,c_]] -> {a, b, c}
Out: {1, x, 2}
Pourquoi n'utilisez-vous pas l'accès standard à la sous-expression?
expr = Inégalité [1, Moins, x, Moins, 2]; {a, c, e} = {expr [[1]], expr [[3]], expr [[5]]};
Parce que je dois remplacer toutes les inégalités avec égalités dans quelque chose comme ça - http://pastebin.com/wN2ENmL6 –
En outre, vous pouvez le faire:
inégalité [1, Moins, x, Moins, 2] /. littérales @ inégalité [a_, _, c_, _, e_] -> {a, c, e}
ADL
Je me suis demandé pourquoi 'HoldPattern' est requis, et' Trace' révèle pourquoi: 'Inequality [a _, _, b _, _, c_]' devient 'Inequality [a_, _, c_] && Inequality [ c_, _, e_] '. Donc, il ne correspond plus à ce que vous attendez. – rcollyer
@rcollyer Yep, un motif est évalué. Essayez cet exemple ** MatchQ [a/b, _/_] // Trace ** –
Cela me rendrait fou pendant des heures en essayant de faire fonctionner ce modèle. – rcollyer