Gibt es eine vordefinierte Funktion in Java 8, das so etwas wie dies funktioniert:Java 8 Funktion, die immer den gleichen Wert zurück, ohne Parameter in Bezug auf
static <T, R> Function<T, R> constant(R val) {
return (T t) -> {
return val;
};
}
Um Menschen Abfrage zu beantworten, warum ich brauche diese Funktion hier das ist Alltag, wenn ich eine ganze Zahl zu einer römischen Zahlen zu analysieren versuchen:
// returns the stream of roman numeral symbol based
// on the digit (n) and the exponent (of 10)
private static Stream<Symbol> parseDigit(int n, int exp) {
if (n < 1) return Stream.empty();
Symbol base = Symbol.base(exp);
if (n < 4) {
return IntStream.range(0, n).mapToObj(i -> base);
} else if (n == 4) {
return Stream.of(base, Symbol.fifth(exp));
} else if (n < 9) {
return Stream.concat(Stream.of(Symbol.fifth(exp)),
IntStream.range(5, n).mapToObj(i -> base));
} else { // n == 9 as n always < 10
return Stream.of(base, Symbol.base(exp + 1));
}
}
Und ich denke, das IntStream.range(0, n).mapToObj(i -> base)
so etwas wie Stream.of(base).times(n - 1)
vereinfacht werden könnte, leider gibt es keine times(int)
Methode auf Stream-Objekt. Weiß jemand, wie man es macht?
Können Sie ein Beispiel geben, wo eine Funktion wie _constant_ nützlich wäre? – nosid
Interessiert auch an einem Anwendungsfall. So weit ich sehen kann, wäre 'x -> 5 'mehr oder weniger äquivalent zu' constant (5) ', aber ich habe das Gefühl, dass ich etwas verpasst habe :) –
x -> 5 ist genau das was ich suche ! Kannst du es in die Antwort einfügen? –