Aktywne Wpisy
Networks_PowerCat +310
Nie wiem czy na nowym wykopie #pokazmorde #atencyjnyrozowypasek to nadal instant gorące, ale jeśli tak, to wykorzystam ten boost, bo mam coś ważnego do powiedzenia.
W weekend 2-3 września na Pustyni Błędowskiej odbywa się rakietowy Festiwal Meteora 2023.
Oficjalna strona: https://rakiety.org.pl/festiwal-meteora/
Zawsze jak wrzucam pofestiwalowe zdjęcie z rakietą, to prosicie, żeby następnym razem poinformować wcześniej. Co to za wydarzenie? Festiwal modelarstwa rakietowego organizowany przez Polskie Towarzystwo Rakietowe. Zarezerwowana przestrzeń powietrzna to okazja
W weekend 2-3 września na Pustyni Błędowskiej odbywa się rakietowy Festiwal Meteora 2023.
Oficjalna strona: https://rakiety.org.pl/festiwal-meteora/
Zawsze jak wrzucam pofestiwalowe zdjęcie z rakietą, to prosicie, żeby następnym razem poinformować wcześniej. Co to za wydarzenie? Festiwal modelarstwa rakietowego organizowany przez Polskie Towarzystwo Rakietowe. Zarezerwowana przestrzeń powietrzna to okazja
To_nie_ja_to_ona +110
DEMASKACJA! Ciekawe alter ego Pani Joanny..
Aktywne Znaleziska
Zawiera treści 18+
Ta treść została oznaczona jako materiał kontrowersyjny lub dla dorosłych.
Np taki kod
interface Addable{
int add(int a,int b);
}
public class LambdaExpressionExample6 {
public static void main(String[] args) {
// Lambda expression without return keyword.
Addable ad1=(a,b)->(a+b);
System.out.println(ad1.add(10,20));
// Lambda expression with return keyword.
Addable ad2=(int a,int b)->{
return (a+b);
};
System.out.println(ad2.add(100,200));
}
}
tworzy się obiekt ad1 na podstawie interfejsu Addable, nadaje się funkcji add treść (która będzie działać tylko dla ad1, dla ad2 może być to już zupełnie inna funkcja) i się linijkę niżej odpala funkcję add.
A co się stało tutaj?
rozumiem że lambda bez interfejsu albo klasy statycznej nie zadziała? czyli w tym drugim kodzie musi być interfejs reduce?
Tego można użyć jak się już nada funkcji treść kodem numer 2? Ale gdzie tu argumenty (no bo z tego co rozumiem trzeba przekazać argumenty left i right)?
#ehhhhhhhhhhhhh #java #naukaprogramowania #programowanie
PS jak dodać blok tekstu do spoilera?
// Bez lambd
Predicate isBlank = new Predicate() {
public boolean test(String s) {
return s.trim().isEmpty();
}
}
// z lambda
Predicate isBlank = s -> s.trim().isEmpty();
trochę mieszając to precyzyjniej interfejsu z jedną metodą niedomyślną
patrz java.util.function.Predicate ( ͡° ͜ʖ ͡°)
suma sum = (int a) -> {return a*a;};
IntSupplier xxx = sum::add; //błąd
suma yyy = sum::add;
czemu xxx daję błąd a yyy nie?
java.util.function.IntSupplier#getAsInt
nie przyjmuje żadnego argumentu w przeciwieństwie do
int add(int a);
gdyby obie metody miały identyczne wejście i wyjście (ilość argumentów i typy) wtedy ten zapis by zadziałał
@Bruno_: referencje do metod to trochę "skrót myślowy", bo w praktyce można oznaczać aż 4 różne rzeczy, zobacz sobie sposoby użycia z tutorialu oracle https://docs.oracle.com/javase/tutorial/java/javaOO/methodreferences.html (tabelka)
a jeśli potrzebujesz totalnego wprowadzenia do lambd, poszukaj na YT jakiś prezentacji gościa co się zwie Venkat Subramanian o wprowadzeniu do programowania funkcyjnego - i cóż że z Indii, skoro kumaty, znany ewangelista tego podejścia
@Bruno_: Poza tym w lambdach nie podajesz typu argumentu - jest on wnioskowany z typu pod ktory podstawiana jest lambda, czyli nie (int a) -> ..., tylko po prostu a -> ...
to ja jeszcze dodam, że jeżeli ciało wyrażenia lambda zawiera tylko zwracaną wartość to nie trzeba omiatać jej nawiasami klamrowymi, czyli dodając to do tego co napisał @Kresse mamy a->a*a;
@zly_dzien @Kresse @ppawel @witajswiecie @100lik dzięki za odpowiedź, jutro przeanalizuje to co napisaliscie, tymczasem życzę wam dobrej nocy (。◕‿‿◕。)