✨ System.out.println("Ti piace ciò che facciamo?" } ✨ 🍂☕ Sostienici con un Java Coffee! ko-fi.com/codebrothers 🍂☕ 👾 Entra nella community Discord 🡆 discord.gg/bhA8TTQgGh 👾
Ciao Nicola! Grazie è molto bello sapere che ti sia tornato utile 🤟😎 lo scopo del nostro canale è proprio rendere una materia trafiggi ma**ni un po' più divertente così da diventare ogni giorno dei dev migliori! Ultimamente stiamo cercando di migliorare ancora di più i video, ti consiglio quindi gli ultimi due sui Thread per avere una esperienza nuova e si spera..ancora migliore ✨
@@CodeBrothers Nell'interfaccia hai fatto vedere che inserendo un altro metodo dava errore, perchè appunto ne poteva contenere solo uno. Ma quindi quella annotation serve esclusivamente a segnalare il fatto che hai messo un altro metodo? Non so se mi sono spiegato
@@eigherreight71 Lo scopo della annotation @FunctionalInterface è di INFORMARE che quella interfaccia dovrà contenere un solo metodo astratto, in questo modo se un altro sviluppatore arriverà lì e proverà ad aggiungere qualcosa ci penserà due volte vedendo quella annotation :) Inoltre sposterai il tuo problema direttamente nella tua interfaccia e non in giro per il codice in 2000 posti! In poche parole non è obbligatorio metterla ma aiuta molto a ridurre possibili errori. Facci sapere se ti è tutto chiaro e in caso entra pure nel nostro canale Discord dove possiamo anche conversare e ti puoi confrontare con altri CodeBrothers ;)
Ciao! Contenuto molto interessante, pensi di preparare un contenuto anche sugli stream? Ho dato un occhiata ai tuoi video, spesso lo utilizzi ma non ho trovato nullo in cui spieghi dettagliatamente questo costrutto. Grazie mille
Ciao R2! 😄 Il corso che stiamo preparando vuole coprire ogni parte possibile di Java, e sebbene ci vorrà molto tempo questo è il nostro obiettivo. Gli stream sono fondamentali, presto arriveranno e meriteranno una Playlist a parte addirittura! Al momento, come detto nei video di domande di colloquio purtroppo ancora non li abbiamo trattati ma volevamo comunque mostrarli così da aiutare coloro che sono in fase di selezione (e chissà..magari se qualcuno vuole provare a studiarseli trova anche degli esercizi risolti!) Un saluto 🤟
@@CodeBrothers Allora non mi resta che iscrivermi, cosa che ho già fatto ed attivare la campanella. Complimenti per la bella iniziativa, posso chiederti ogni quando esce un video?
@@RDB-jl2we Grazie infinite per la fiducia! 🙏 Per il momento abbiamo sempre fatto uscire un nuovo video ogni lunedì alle ore 12 (è infatti proprio la nostra copertina se clicchi dentro il canale 🤣) e inoltre quando trattiamo esercizi molto veloci ne facevamo uscire anche uno il mercoledì sempre alle ore 12. Adesso stiamo per portare una grande novità sul canale, capiti in un momento davvero unico (ha a che fare con il penultimo video che abbiamo pubblicato). Ci sarà forse una piccola pausa per cui vale MOLTO la pena aspettare, ne parleremo nel video del prossimo lunedì quasi sicuramente! 😇
Salve Brothers.. il video mi ha chiarito degli aspetti ma l'apertura su questo argomento mi ha messo dubbi su alcune cose che pensavo essere certezze.. cioè boom avete mandato in Crash il mio coding.. non va bene!! 😭 Rimanendo sul pezzo. Nei video indiani (purtroppo in lingua non italiana sono il 70% indiani) sulla FP si parla prevalentemente della classe producer e consumer per funzioni lambda che da quel poco che ho capito sono l'equivalente delle Arrow function di JS. Il punto è (e questo è un dubbio che mi rimane pur avendo guardato il vostro video) se ho bisogno di creare una lambda espression che usa in ingresso n > 3 parametri con consumer e producer come si fa esiste un metodo per non fare casino ed usare 3 o 4 o più parametri di ingresso????? In ultima istanza: approcciandomi alla fp in JS anzitempo, l'unica vera certezza che ho maturato è che, facendo un paragone con c++, una funzione lambda è una sorta di puntatore a funzione io creo questo puntatore che punta ad un'area di codice e lo uso come fosse una funzione passandoci anche parametri, non ha bisogno di un return ed è per via del LifeScooping più pratico... Vi prego, come dei massaggiatori mettete a posto le ossa rotte dovuto alla confusione che ho in testa 😂
Ciao Biagio! 😊 Innanzitutto ci teniamo a sottolineare che una lambda non è un puntatore a funzione ma è un vero e proprio oggetto. Quando scriviamo _Consumer c = s -> System.out.println(s)_ stiamo assegnando la nostra lambda expression ad una reference variable *s* di tipo *Consumer* . Per forza di cose quindi la espressione viene valutata ad un oggetto di quel tipo o non potrebbe venire assegnata a quella variabile. Sulla questione "parametri >3", dato che la lambda la stiamo utilizzando per implementare una functional interface, dobbiamo per forza rispettare la sua firma. Consumer prevede 1 solo argomento, BiConsumer ne prevede due quindi da lì non si scappa. Per usarne tre o più hai due approcci: - ti crei una tua nuova interfaccia, ad esempio TriConsumer, che prende in input 3 parametri - usi la tecnica del currying Eccoti degli esempi per ognuno dei 2 casi: *Currying* Function f = d -> i -> s -> { System.out.println("" + d+ ";" + i+ ";" + s); }; f.apply(1.0).apply(2).accept("s");TriConsumer: *TriConsumer* @FunctionalInterface public interface TriConsumer { void accept(A a, B b, C c); }
Ciao Pinco! Per restituire un valore questo dipenderà dalla tua implementazione. Noi abbiamo solo usato un System.out ma tu puoi decidere ciò che preferisci 😊 Puoi fare anche una addizione per esempio! return (a, b) - > a+b; La figata è che la lambda come ho detto, è proprio un valore 🤘
@@CodeBrothers la verità è che devo partire dall inizo. 😔 è un periodo incasinato ma appena farò sul serio like ad ogni video. Grazie per il lavoro che hai fatto.
@@pincopanco131 Tranquillo Pinco, anche una camminata di 10.000 passi comincia semplicemente col muovere in avanti la gamba destra (o sinistra! 😄). Il nostro corso lo abbiamo cominciato veramente dalle basi più totali quindi entra pure sul nostro canale, cerca la playlist di teoria e clicca sulla lezione 1 dove ti spiegherò proprio le basi della programmazione Java con tanto di storia e la sua nascita 🧐 Facci sapere, a presto!
Ciao Luigi! 😉 Ogni volta che scriviamo una Lambda stiamo usando "S.A.M" e quindi una @FunctionalInterface ma attenzione a non confondere i concetti: posso usare una lambda anche se non ho l'annotazione @FunctionalInterface. Quindi non è vero che se ho una @FunctionalInterface allora sto usando una Lambda. Fammi sapere se è tutto chiaro, a presto!
@@CodeBrothers si di fatti nel video all inizio viene usata la lambda senza l'annotazione, perché c'è solo un metodo. Però dico in generale se voglio usare una lambda devo usare un'interfaccia, che dovrà essere una factionalinterface, poi l'annotazione può essere omessa. Oppure ci sono altri metodi di dichiarare una lambda?
@@luigimiranda98 Esatto Luigi, ormai hai fatto tuo il concetto 💥 Potremmo anche dire che, più che usare una interfaccia la Lambda è proprio lei stessa la implementazione di quella interfaccia
@@giuseppedestasio7358 Ciao Giuseppe e grazie per il commento! Capisco il dubbio, e provo a rispondere: se mostrassi soltanto come fare in modo rapido e lineare non avresti mai saputo perché esiste la lambda, a quale necessità risponde, perché è nata e come tornare indietro da lambda a classe anonima. Queste cose a volte sono necessarie e soprattutto se te la chiedono ad un colloquio non puoi non saperla.. PS: Inoltre la lambda si comporta in modo diverso dalla implementazione con classe anonima
✨ System.out.println("Ti piace ciò che facciamo?" } ✨
🍂☕ Sostienici con un Java Coffee! ko-fi.com/codebrothers 🍂☕
👾 Entra nella community Discord 🡆 discord.gg/bhA8TTQgGh 👾
Sei veramente forte, riesci a rendere leggere lezioni su argomenti veramente pesanti e pallosi ma senza esagerare
Ciao Nicola! Grazie è molto bello sapere che ti sia tornato utile 🤟😎 lo scopo del nostro canale è proprio rendere una materia trafiggi ma**ni un po' più divertente così da diventare ogni giorno dei dev migliori! Ultimamente stiamo cercando di migliorare ancora di più i video, ti consiglio quindi gli ultimi due sui Thread per avere una esperienza nuova e si spera..ancora migliore ✨
Like obbligatorio, iscrizione anche, bravissimo!
Ciao Karazero! Grazie mille cerchiamo di fare del nostro meglio in ogni video!:)
Veramente ben fatto. Complimenti
Ci fa un sacco piacere Raffaele! Ci abbiamo messo molto a prepararla 🥰
Fortissimo, grazie!
Ciao Eigherteight! Grazie mille a te 💪😎
Ma quindi la annotation @FunctionalInterface serve solo ed esclusivamente a segnalare la presenza di metodi di troppo?
Ehi ciao! Cosa intendi di preciso con la presenza di metodi di troppo?
@@CodeBrothers Nell'interfaccia hai fatto vedere che inserendo un altro metodo dava errore, perchè appunto ne poteva contenere solo uno. Ma quindi quella annotation serve esclusivamente a segnalare il fatto che hai messo un altro metodo?
Non so se mi sono spiegato
@@eigherreight71 Lo scopo della annotation @FunctionalInterface è di INFORMARE che quella interfaccia dovrà contenere un solo metodo astratto, in questo modo se un altro sviluppatore arriverà lì e proverà ad aggiungere qualcosa ci penserà due volte vedendo quella annotation :)
Inoltre sposterai il tuo problema direttamente nella tua interfaccia e non in giro per il codice in 2000 posti!
In poche parole non è obbligatorio metterla ma aiuta molto a ridurre possibili errori. Facci sapere se ti è tutto chiaro e in caso entra pure nel nostro canale Discord dove possiamo anche conversare e ti puoi confrontare con altri CodeBrothers ;)
Ciao! Contenuto molto interessante, pensi di preparare un contenuto anche sugli stream?
Ho dato un occhiata ai tuoi video, spesso lo utilizzi ma non ho trovato nullo in cui spieghi dettagliatamente questo costrutto.
Grazie mille
Ciao R2! 😄
Il corso che stiamo preparando vuole coprire ogni parte possibile di Java, e sebbene ci vorrà molto tempo questo è il nostro obiettivo. Gli stream sono fondamentali, presto arriveranno e meriteranno una Playlist a parte addirittura! Al momento, come detto nei video di domande di colloquio purtroppo ancora non li abbiamo trattati ma volevamo comunque mostrarli così da aiutare coloro che sono in fase di selezione (e chissà..magari se qualcuno vuole provare a studiarseli trova anche degli esercizi risolti!) Un saluto 🤟
@@CodeBrothers Allora non mi resta che iscrivermi, cosa che ho già fatto ed attivare la campanella.
Complimenti per la bella iniziativa, posso chiederti ogni quando esce un video?
@@RDB-jl2we Grazie infinite per la fiducia! 🙏 Per il momento abbiamo sempre fatto uscire un nuovo video ogni lunedì alle ore 12 (è infatti proprio la nostra copertina se clicchi dentro il canale 🤣) e inoltre quando trattiamo esercizi molto veloci ne facevamo uscire anche uno il mercoledì sempre alle ore 12.
Adesso stiamo per portare una grande novità sul canale, capiti in un momento davvero unico (ha a che fare con il penultimo video che abbiamo pubblicato).
Ci sarà forse una piccola pausa per cui vale MOLTO la pena aspettare, ne parleremo nel video del prossimo lunedì quasi sicuramente! 😇
Salve Brothers.. il video mi ha chiarito degli aspetti ma l'apertura su questo argomento mi ha messo dubbi su alcune cose che pensavo essere certezze.. cioè boom avete mandato in Crash il mio coding.. non va bene!! 😭
Rimanendo sul pezzo. Nei video indiani (purtroppo in lingua non italiana sono il 70% indiani) sulla FP si parla prevalentemente della classe producer e consumer per funzioni lambda che da quel poco che ho capito sono l'equivalente delle Arrow function di JS. Il punto è (e questo è un dubbio che mi rimane pur avendo guardato il vostro video) se ho bisogno di creare una lambda espression che usa in ingresso n > 3 parametri con consumer e producer come si fa esiste un metodo per non fare casino ed usare 3 o 4 o più parametri di ingresso?????
In ultima istanza: approcciandomi alla fp in JS anzitempo, l'unica vera certezza che ho maturato è che, facendo un paragone con c++, una funzione lambda è una sorta di puntatore a funzione io creo questo puntatore che punta ad un'area di codice e lo uso come fosse una funzione passandoci anche parametri, non ha bisogno di un return ed è per via del LifeScooping più pratico...
Vi prego, come dei massaggiatori mettete a posto le ossa rotte dovuto alla confusione che ho in testa 😂
Ciao Biagio! 😊
Innanzitutto ci teniamo a sottolineare che una lambda non è un puntatore a funzione ma è un vero e proprio oggetto.
Quando scriviamo _Consumer c = s -> System.out.println(s)_ stiamo assegnando la nostra lambda expression ad una reference variable *s* di tipo *Consumer* .
Per forza di cose quindi la espressione viene valutata ad un oggetto di quel tipo o non potrebbe venire assegnata a quella variabile.
Sulla questione "parametri >3", dato che la lambda la stiamo utilizzando per implementare una functional interface, dobbiamo per forza rispettare la sua firma.
Consumer prevede 1 solo argomento, BiConsumer ne prevede due quindi da lì non si scappa.
Per usarne tre o più hai due approcci:
- ti crei una tua nuova interfaccia, ad esempio TriConsumer, che prende in input 3 parametri
- usi la tecnica del currying
Eccoti degli esempi per ognuno dei 2 casi:
*Currying*
Function f = d -> i -> s -> {
System.out.println("" + d+ ";" + i+ ";" + s);
};
f.apply(1.0).apply(2).accept("s");TriConsumer:
*TriConsumer*
@FunctionalInterface
public interface TriConsumer {
void accept(A a, B b, C c);
}
Finalmente
E vedrai la prossima che roba! 😄
Invece se voglio restituire un valore con la lambda?
Ciao Pinco! Per restituire un valore questo dipenderà dalla tua implementazione. Noi abbiamo solo usato un System.out ma tu puoi decidere ciò che preferisci 😊
Puoi fare anche una addizione per esempio!
return (a, b) - > a+b;
La figata è che la lambda come ho detto, è proprio un valore 🤘
@@CodeBrothers la verità è che devo partire dall inizo. 😔 è un periodo incasinato ma appena farò sul serio like ad ogni video. Grazie per il lavoro che hai fatto.
@@pincopanco131 Tranquillo Pinco, anche una camminata di 10.000 passi comincia semplicemente col muovere in avanti la gamba destra (o sinistra! 😄).
Il nostro corso lo abbiamo cominciato veramente dalle basi più totali quindi entra pure sul nostro canale, cerca la playlist di teoria e clicca sulla lezione 1 dove ti spiegherò proprio le basi della programmazione Java con tanto di storia e la sua nascita 🧐
Facci sapere, a presto!
Ma quindi ogni volta che userò le lambda devo usare le functional interface? Intendo proprio come correttezza di scrittura
Ciao Luigi! 😉
Ogni volta che scriviamo una Lambda stiamo usando "S.A.M" e quindi una @FunctionalInterface ma attenzione a non confondere i concetti: posso usare una lambda anche se non ho l'annotazione @FunctionalInterface.
Quindi non è vero che se ho una @FunctionalInterface allora sto usando una Lambda.
Fammi sapere se è tutto chiaro, a presto!
@@CodeBrothers si di fatti nel video all inizio viene usata la lambda senza l'annotazione, perché c'è solo un metodo.
Però dico in generale se voglio usare una lambda devo usare un'interfaccia, che dovrà essere una factionalinterface, poi l'annotazione può essere omessa.
Oppure ci sono altri metodi di dichiarare una lambda?
@@luigimiranda98 Esatto Luigi, ormai hai fatto tuo il concetto 💥
Potremmo anche dire che, più che usare una interfaccia la Lambda è proprio lei stessa la implementazione di quella interfaccia
@@CodeBrothers perfetto quest'ultima risposta mi ha definitivamente chiarito le idee.
Grazie come sempre♥️
@@luigimiranda98 ma figurati, è un piacere, buon proseguimento ✌️😎
opinione di uno che ne sa poco, a furia di passi indietro si confonde tutto, per me dovrebbe essere piu lineare chiaro semplice.... .meno parole.
@@giuseppedestasio7358 Ciao Giuseppe e grazie per il commento! Capisco il dubbio, e provo a rispondere: se mostrassi soltanto come fare in modo rapido e lineare non avresti mai saputo perché esiste la lambda, a quale necessità risponde, perché è nata e come tornare indietro da lambda a classe anonima. Queste cose a volte sono necessarie e soprattutto se te la chiedono ad un colloquio non puoi non saperla..
PS: Inoltre la lambda si comporta in modo diverso dalla implementazione con classe anonima