Wie kann ich schreiben mit Java 8 mit Schließungen eine Methode, die als Argument eine Funktion und Rückgabefunktion als Wert nehmen?Lambda-Ausdrücke und Funktionen höherer Ordnung
Antwort
In Java Lambda API ist die Hauptklasse java.util.function.Function.
Sie können einen Verweis auf diese Schnittstelle in der gleichen Art und Weise verwenden, wie Sie mit allen anderen Artikeln tun würden: erstellen, die als Variable, kehren sie als Ergebnis der Berechnung und so weiter. Hier
ist ganz einfaches Beispiel, das Sie helfen könnten:
public class HigherOrder {
public static void main(String[] args) {
Function<Integer, Long> addOne = add(1L);
System.out.println(addOne.apply(1)); //prints 2
Arrays.asList("test", "new")
.parallelStream() // suggestion for execution strategy
.map(camelize) // call for static reference
.forEach(System.out::println);
}
private static Function<Integer, Long> add(long l) {
return (Integer i) -> l + i;
}
private static Function<String, String> camelize = (str) -> str.substring(0, 1).toUpperCase() + str.substring(1);
}
Wenn Sie mehr als 1 Parameter zu übergeben, nehmen bitte einen Blick in compose
Methode, aber seine Verwendung ist ziemlich schwierig.
Im Allgemeinen von meiner Meinung Schließungen und Lambda-Ausdrücke in Java ist im Grunde Syntax-Zucker, und sie scheinen nicht alle Funktionen der funktionalen Programmierung haben.
Ihnen sehr für die Antwort danken! Wissen Sie, ob es zutreffend dies: add (8) (10), weil dies tut sehr langweilig ist: add (8) .apply (10) – xdevel2000
Leider scheint es nicht erlaubt zu sein, zumindest - jetzt – n1ckolas
n1ckolas, entschuldigte Ich finde keine Compose-Methode ... Wo kann ich nach einem Beispiel suchen, um eine Funktion mit mehr Parametern zu schreiben? – xdevel2000
- 1. JavaScript-Funktionen höherer Ordnung
- 2. Funktionen höherer Ordnung in C
- 3. Webprogrammierung mit Funktionen höherer Ordnung
- 4. Funktion höherer Ordnung rekursiver Funktionen?
- 5. Mit Funktionen höherer Ordnung in Ruby
- 6. höherer Ordnung Haskell Funktionen Angewandt auf Bäume
- 7. Verhalten mit Kotlin-Funktionen höherer Ordnung und Einzelmethodenschnittstellen?
- 8. Typescript - Funktionstypen höherer Ordnung
- 9. Wie testen Sie Funktionen höherer Ordnung in Clojure?
- 10. Wie funktionieren Namen-Name-Argumente in Funktionen höherer Ordnung?
- 11. Perfect-Spedition aufrufbare Objekte in Funktionen höherer Ordnung
- 12. Verwenden von Python-Funktionen höherer Ordnung zum Bearbeiten von Listen
- 13. PropTypes auf Komponenten höherer Ordnung
- 14. Existentielle Art in Funktion höherer Ordnung
- 15. "Filter" Funktion höherer Ordnung in C++
- 16. Wie schreibe ich Funktionen höherer Ordnung, die polymorphe Funktionen als Argumente in Typed Racket nehmen?
- 17. Typescript: Typdefinitionen für Komponenten höherer Ordnung
- 18. Bearbeiten von Listen in Haskell mit Funktionen höherer Ordnung und Lambda-Kalkül
- 19. Welcher Zusammenhang besteht zwischen "Generika" und "Typen höherer Ordnung"?
- 20. Wie viel kann man mit Makros (höherer Ordnung) machen?
- 21. Funktionale Programmierung in C mit Makro „Funktion höherer Ordnung“ Generatoren
- 22. Scala hohe Ordnung Funktionen
- 23. Clojure Funktionen höherer Ordnung nehmen Funktionsargumente, aber was ist die Syntax?
- 24. Funktionen höherer Ordnung in C als syntaktischer Zucker mit minimalem Aufwand
- 25. Wie man die Liste der Optionen mit Funktionen höherer Ordnung glätten?
- 26. Wie kann diese Funktion höherer Ordnung ohne statische Funktionen umgeschrieben werden?
- 27. React: wie auf Basisklasse von Komponenten höherer Ordnung zugreifen
- 28. Dekorieren importiert Reagieren Komponente mit höherer Ordnung Komponente
- 29. Mocha Mit Komponenten höherer Ordnung zu testen, in
- 30. Irgendeine Idee über die Konstruktion eines Quine-Programms höherer Ordnung?
[Closures für Java Entwurfsspezifikation (von Neal Gafter und Peter von der Ahé)] (http://javac.info/) –
@Quoi Diese Website bezieht sich auf Vorschläge, die vor Jahren gestorben sind. Für Fortschritte in Richtung Java 8 Implementierung siehe http://lambdafaq.org –
@MauriceNaftalin dank –