23 Stimmen

Äquivalent für Pythons Lambda-Funktionen in Java?

Kann mir jemand sagen, ob es ein Äquivalent für Pythons Lambda-Funktionen in Java gibt?

1voto

user367836 Punkte 91

Ähnlich wie bei Zifre könnte man eine Schnittstelle wie folgt erstellen

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

damit Sie zum Beispiel schreiben können

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();
}

Es ist zwar immer noch ein bisschen unübersichtlich, aber es hat zumindest einen Input/Output.

1voto

Saber Alex Punkte 1329

Mit der Veröffentlichung von Java 8 ist der Lambda-Ausdruck jetzt verfügbar. Und die Lambda-Funktion in Java ist tatsächlich "mächtiger" als die in Python.

In Python darf ein Lambda-Ausdruck nur einen einzigen Ausdruck für seinen Körper haben, und keine return Anweisung ist zulässig. In Java können Sie etwa so vorgehen: (int a, int b) -> { return a * b; }; und auch andere optionale Dinge.

Java 8 führt außerdem eine weitere Schnittstelle ein, die Function Interface . Das sollten Sie sich vielleicht auch ansehen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X