Deutsch

C# - pattern matching - many discards

10.03.24 19:08
Re: C# - pattern matching - many discards
 
alex445 коренной житель
в ответ Срыв покровов 10.03.24 18:56, Последний раз изменено 10.03.24 19:26 (alex445)
да вроде то же самое есть







<code>    private static Function<Integer, Integer> multiply = x -> x * 2;

    private static Function<Integer, Integer> add = x -> x + 2;

    private static Function<Integer, Unit> logOutput = x -> {
        logger.info("Data:" + x);
        return Unit.unit();
    };

    public static Unit execute(Integer input) {
        Function<Integer, Unit> pipeline = multiply
                                               .andThen(add)
                                               .andThen(logOutput);
        return pipeline.apply(input);
    } </code>

Это больше похоже на Select и SelectMany - просто пачка расширяющих методов с делегатами в качестве параметров, применяемых ко входным данным и результатам. А я спросил про деревья выражений - сериализация делегатов и функций, представление их в виде данных.


Вобщем, я поискал - нет такого в Джаве из коробки. Есть какие-то сторонние либы, разрабатываемые энтузиастами, типа JaQue. Это не сравнимо с Дотнетом и Шарпом, где подобные фичи разрабатываются, внедряются во фреймворк и поддерживаются на системном уровне самой компанией-разработчиком языка и фреймворка. В Дажве и большинстве других языков без крупного хозяина всегда такие проблемы - их экосистемы представляют из себя конструктор "сделай сам" - т.е. практически отсутствуют. Надо писать под десктоп? - Ищи гуёвую либу под Джаву. Надо под веб? - Ищи гуёвую либу для веба. Надо трёхмерную графику? - Ищи джавовый движок. И вот часто у Джавы и других языков либо нет нифига для этого, либо что-то стороннее, с поддержкой мелкой фирмочки или вообще тремя с половиной энтузиастами. Хочешь комплексное решение "всё из коробки, подогнанное"? - Иди к Майкрософт. Да, у них есть проблемы. Но у других их ещё больше. Что-то подобное есть лишь у Эппл. Но хуже, мельче, меньший охват (нет своей СУБД, например), и нужно менять ориентацию (в переносном смысле).

 

Перейти на