Wie schreibe ich eine generische Iteration einer Funktion mit Java 8?

8

Bitte beachten Sie die folgenden zwei Funktionen:

%Vor%

Während composite(first, second) die Komposition von first und second berechnet, berechnet iterate(function, n) die nth iterieren von function .

Während die Einschränkung Y extends X für jede n > 0 ausreicht, haben wir ein Problem mit n == 0 . Mathematisch sollte iterate die Identitätsfunktion ergeben. Daher würden wir auch X extends Y , d. H.% Co_de%, ebenfalls benötigen.

Bitte beachten Sie das folgende Beispiel

%Vor%

Dies ergibt die Fehlermeldung:

%Vor%

Was ist die beste Option hier? Wenn X == Y , könnten wir überprüfen, ob n == 1 als X akzeptabel ist. Ich würde gerne andere Optionen und einige Ideen hören, wie diese Prüfung durchgeführt werden kann (soweit ich weiß, gibt es keine einfache Lösung, um zwei generische Parameter auf Gleichheit zu überprüfen).

    
0xbadf00d 24.05.2014, 21:48
quelle

2 Antworten

8

Versuchen Sie:

%Vor%

Wenn Y & lt ;: X, ​​dann ist eine Funktion von X nach Y auch eine Funktion von X nach X, und Sie sollten in der Lage sein zu tun, was Sie wollen.

    
Brian Goetz 24.05.2014, 22:11
quelle
5

Sie müssen den Typ Ihres Ergebnisses ändern, um den Platzhalter zu berücksichtigen:

%Vor%

und die Signatur der iterate Methode zu:

%Vor%

Beispiel:

%Vor%

gibt 9 wie erwartet aus.

Alternativ können Sie ein UnaryOperator :

verwenden %Vor%     
assylias 24.05.2014 22:27
quelle

Tags und Links