Можно ли использовать типы LINQ и дополнительные методы в IronPython?

ДА это возможно

class base {

 base show(){

System.out.println("base class");

return new base();

}
}

class sub extends base{

sub show(){

    System.out.println("sub class");

    return new sub();

 }
}

class inheritance{

 public static void main(String []args) {

        sub obj=new sub();

            obj.show();
 }
}
34
задан Ólafur Waage 9 March 2009 в 23:54
поделиться

2 ответа

Некоторые вещи, которые Вы сделали бы с LINQ, могут быть сделаны с пониманиями списка:

[myFunc(i) for i in numbers if i > 3]

Или можно использовать карту, уменьшить, и фильтр:

map(myFunc, filter(lambda x: x > 3, numbers))

, Но понимания списка намного больше "Pythonic", чем использование конструкций функционального программирования. Для сокращения вещей рассмотрите использование "" .join или сумма . И можно проверить, что значение истинности всего iterables при помощи [1 110] любой и весь

Просто помнит эти переводы:

Select -> map
Where -> filter
Aggregate -> reduce

И Вы хорошо будете на пути!

23
ответ дан Patrick 10 October 2019 в 14:00
поделиться

Я описал класс-оболочку C# вокруг методов расширения LINQ, чтобы получить синтаксис, аналогичный синтаксису «цепочечного метода расширения» C# в IronPython.

Идея состоит в том, чтобы иметь своего рода класс декоратора вокруг IEnumerable, который просто вызывает методы расширения. Вероятно, этот класс-оболочку может быть написан так же хорошо на IronPython, но я пока не так хорошо разбираюсь в python :-)

public class ToLinq<T> : IEnumerable<T>
{
    private readonly IEnumerable<T> _wrapped;

    public ToLinq(IEnumerable<T> wrapped)
    {
       _wrapped = wrapped;
    }

    public ToLinq<T> Where(Func<T, bool> predicate)
    {
        return new ToLinq<T>(_wrapped.Where(predicate));
    }


    // ... similar methods for other operators like Select, Count, Any, ...

}

Это позволяет использовать синтаксис, подобный этому:

johns = ToLinq[Customer](customers)\
          .Where(lambda c: c.Name.StartsWith("John"))\
          .Select(lambda c: c.Name)

Отказ от ответственности: это то, что я пробовал в качестве учебное упражнение, я не использовал это в реальном проекте.

3
ответ дан 27 November 2019 в 16:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: