Kann mir jemand sagen, ob es ein Äquivalent für Pythons Lambda-Funktionen in Java gibt?
Antworten
Zu viele Anzeigen?Ä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.
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.
- See previous answers
- Weitere Antworten anzeigen