Эквивалентный для лямбды Python функционирует в Java?

Хотя еще один ответ правильный, удаление файла cookie из веб-приложения express.js выполняется путем вызова следующего метода:

res.clearCookie("key");

Но есть предостережение!

Ваши параметры cookie (за исключением срока действия) должны быть такими же, как и при его установке. В противном случае браузеры НЕ удалят куки. Поэтому используйте тот же домен, настройки безопасности и т. Д. (Ссылка: https://expressjs.com/en/4x/api.html#res.clearCookie )

22
задан S.Lott 30 May 2009 в 17:07
поделиться

4 ответа

К сожалению, лямбда-выражения в Java отсутствуют до тех пор, пока в Java 8 не появятся лямбда-выражения . Однако вы можете получить почти тот же эффект (действительно уродливым способом) с анонимными классами:

interface MyLambda {
    void theFunc(); // here we define the interface for the function
}

public class Something {
    static void execute(MyLambda l) {
        l.theFunc(); // this class just wants to use the lambda for something
    }
}

public class Test {
    static void main(String[] args) {
        Something.execute(new MyLambda() { // here we create an anonymous class
            void theFunc() {               // implementing MyLambda
                System.out.println("Hello world!");
            }
        });
    }
}

Очевидно, они должны быть в отдельных файлах: (

27
ответ дан 29 November 2019 в 04:23
поделиться

Я не думаю, что есть точный эквивалент, однако есть анонимные классы, которые настолько близки, насколько это возможно. Но все же совсем другое. Джоэл Спольски написал статью о том, как студенты, изучающие только Java, упускают из виду эти красоты программирования в функциональном стиле: Может ли ваш язык программирования делать это? .

9
ответ дан 29 November 2019 в 04:23
поделиться

Одна идея основана на общем публичном интерфейсе Lambda - см. http://www.javalobby.org/java/forums/t75427 .html .

6
ответ дан 29 November 2019 в 04:23
поделиться

В некоторой степени аналогично интерфейсу Зифра, вы можете создать интерфейс таким образом

public interface myLambda<In, Out> {
    Out call(In i);
}

, чтобы вы могли писать, скажем

Function<MyObj, Boolean> func = new Function<MyObj, Boolean>() {
    public Boolean callFor(myObj obj) {
        return obj.canDoStuff();
    };

MyObj thing = getThing;

if (func.callFor(thing)) {
    doSomeStuff();
} else {
    doOtherStuff();
}

Он все еще немного неуклюжий, да, но у него есть как минимум ввод / вывод .

1
ответ дан 29 November 2019 в 04:23
поделиться
Другие вопросы по тегам:

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