Können Sie LINQ-Typen und erweiterungsmethoden in IronPython?
Ist es möglich, mit dem LINQ-Typen und erweiterungsmethoden in IronPython?
Wenn ja, wie? Und auch ist es oft mehr pythonic, das gleiche zu tun?
- Ólafur, wählen Sie bitte Steve Gilham Antwort, damit die Leute surfen, die zu dieser Frage finden Sie unter up-to-date korrekte Informationen. Bei 50K, ich glaube nicht, dass John Feminella verpassen Sie die rep.
Du musst angemeldet sein, um einen Kommentar abzugeben.
IronPython 2.7 schließlich überbrückt diese Kluft mit der
clr.ImportExtensions
Methode fügt die Erweiterung Methoden aus einem namespace, um das Ziel-Arten wie z.B.bringt es in Einklang mit IronRuby 1.1
using_clr_extensions
Methode.Einige der Dinge, die Sie tun würde, mit LINQ kann getan werden, mit Liste Verstehens:
Oder verwenden Sie map, reduce, filter:
Aber Liste Verstehens sind viel mehr "Pythonic", als mit der funktionalen Programmierung Konstrukte. Für die Reduzierung der Dinge, erwägen Sie die Verwendung "".join oder Summe. Und Sie können prüfen, die Wahrheit mit dem Wert der gesamten iterables mithilfe alle und alle
Denken Sie daran, diese übersetzungen:
Und Sie werden auch auf Ihrem Weg!
In IronPython 2.7.1 Sie haben clr.ImportExtensions für diesen Anwendungsfall.
Ein wenig hintergrund: IronPython 2.7 zunächst eingeführt, dieses feature, aber es war ein Problem, die hielt es nicht wirklich brauchbar.
Ich beschrieben wird ein C# wrapper-Klasse rund um die LINQ-extension-Methoden zu erreichen, die eine syntax ähnlich wie C#'s 'verkettete Erweiterung Methode' die syntax in IronPython.
Die Idee ist, eine Art decorator-Klasse um
IEnumerable
, die ruft einfach die Erweiterung Methoden. Wahrscheinlich ist dies die wrapper-Klasse geschrieben werden können, wie eben auch in IronPython, aber ich bin nicht so fließend in python noch 🙂Dies ermöglicht eine syntax wie diese:
Disclaimer: dies ist etwas, was ich versuchte als lernen üben, ich habe nicht verwendet diese in einem real-world-Projekt.