Właśnie zacząłem się uczyć o Java Runnable
s i słyszałem o Callable
s. Jednak bardzo zmagam się z tym problemem. Chciałbym stworzyć metodę, która przyjmuje funkcję jako argument (czy to jako Callable
, Runnable
, czy coś innego, o ile mogę po prostu wywołać funkcję jako coolNewFunction(() -> otherFunction(), 100)
lub jakiś podobny prosty sposób), a metoda zwraca tablicę zwróconych wartości otherFunction
. Na przykład, powiedzmy, że określona funkcjaUtwórz metodę, która generuje wartości xi y kolejnej podanej funkcji
public static int square(int x){
return x * x;
}
mogłem wtedy zrobić coś wzdłuż linii:
coolNewFunction(() -> square(), 100)
a to zwraca tablicę z pierwszych 100 numerów i ich kwadratów (tj {{1, 1}, {2, 4}, {3, 9}...}
) . Teraz od nietoperza wiem, że lambda() -> square()
nie zadziała, ponieważ square
musi zostać przekazana wartość. Chciałem utworzyć tablicę 100 Runnable
s, z których każda ma następny argument dla square
, ale nadal metoda run()
niczego nie zwraca. Krótko mówiąc, jak wyglądałaby metoda, która ocenia inną funkcję podaną jako argument, np. square
przy różnych wartościach x i zwraca tablicę wyników? Ponadto, najlepiej nie chcę zaczynać żadnych nowych wątków, chociaż jeśli jest to jedyny sposób, w jaki można to osiągnąć, to jest w porządku. Wreszcie, nie chcę mieć potrzeby implementowania funkcji square
(lub innej) w specjalny sposób (najlepiej).
Rozważ "IntunaryOperator" zamiast "Function", unika niepotrzebnego boksowania. –
Tunaki