Ich möchte Argumente aus Ungleichungen extrahieren. Folgendes funktioniert nicht, irgendeine Idee warum und wie es zu beheben?Muster stimmt mit Ungleichheit überein
Inequality[1, Less, x, Less, 2] /. Inequality[a_, _, c_, _, e_] -> {a, c, e}
Ich möchte Argumente aus Ungleichungen extrahieren. Folgendes funktioniert nicht, irgendeine Idee warum und wie es zu beheben?Muster stimmt mit Ungleichheit überein
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}
Warum verwenden Sie keinen Standardzugriff auf Unterausdruck?
expr = Ungleichung [1, weniger, x, weniger, 2]; {a, c, e} = {Ausdruck [[1]], Ausdruck [[3]], Ausdruck [[5]]};
Weil ich brauche alle Ungleichheiten mit Gleichheiten in so etwas zu ersetzen - http://pastebin.com/wN2ENmL6 –
Auch können Sie dies tun:
Inequality [1, Weniger, x, Weniger, 2] /. Wörtliche @ Inequality [a_, _, c_, _, e_] -> {a, c, e}
ADL
Ich fragte mich, warum 'HoldPattern' benötigt wird, und' Trace' enthüllt warum: 'Ungleichung [a _, _, b _, _, c_]' wird 'Ungleichung [a_, _, c_] && Ungleichheit [ c_, _, e_] '. Es entspricht also nicht mehr dem, was Sie erwarten. – rcollyer
@rcollyer Ja, ein Muster wird ausgewertet. Probieren Sie dieses Beispiel aus. ** MatchQ [a/b, _/_] // Trace ** –
Das würde mich stundenlang nerven, wenn ich versuche, dieses Muster zum Laufen zu bringen. – rcollyer