Тёмный

Java TUTORIAL Italiano: Cos'è la LAMBDA EXPRESSION (Espressione Lambda) e le Interfacce Funzionali 

CodeBrothers
Подписаться 2,9 тыс.
Просмотров 4,3 тыс.
50% 1

Episodio 74: In questo Tutorial del nostro CORSO JAVA in ITALIANO vediamo cos'è una Lambda in Java e come scriverla senza mai dimenticarla. In questo Java Tutorial apriremo la strada alla programmazione funzionale e ti mostrerò la magia che si cela dietro alle espressioni lambda.
Si possono infatti considerare come implementazioni al volo di interfacce funzionali tramite l'utilizzo di una classe anonima!
Tuttavia le sorprese non finiscono qui, ecco perchè adesso ti lascio al video ;)
_Ecco i materiali che ti ho promesso_
www.infoq.com/articles/Java-8...
docs.oracle.com/javase/specs/...
_Crediti in MLA Style_
"Lambda Performance with Sergey Kuksenko" RU-vid, uploaded by Java, 19 Sept 2019, • Lambda Performance wit...
_Capitoli_
0:00 Intro
1:35 Devi sapere perchè!
5:15 Come passare comportamento puro
8:39 Scriviamola questa Lambda!
14:42 La Lambda e il suo segreto
16:40 NON è Syntactic Sugar
17:45 Non Capturing Lambda
18:34 Lambda con argomenti
24:53 S.A.M Functional Interface
_Crediti canzoni utilizzate__
Blue Wednesday, Magnus Klausen - Runaway chll.to/01aa972e
The BREED - Canção chll.to/f4f2e0bc
Saib - Coral Dreams chll.to/b46d526b
Strehlow, Glimlip - Crema Cafe chll.to/a8be4695
Evil Needle - Cruising chll.to/e05d03f9
L’Indécis - Departure chll.to/0679d13e
L’Indécis - Departure chll.to/0679d13e
Evil Needle - Dive chll.to/92b5eaa5
Brock Berrigan, Saib - Drifter chll.to/e0ba22f3
Ruck P - Early Morning chll.to/49a383af
Leavv - Flushing the Stairs chll.to/c15e849d
Evil Needle - Low Rider chll.to/071dff50
Yasper, Louk - Nightwatch chll.to/6887c4e2
Yasper, Louk - Playful chll.to/ea1a2b6d
L’Indécis - Sideways chll.to/74913862
Ian Ewing - Silver Glen chll.to/16a149bf
Nymano - Sleepover chll.to/699c338f
Ruck P - Soul Food chll.to/7b02d914
Ruck P - Spring In La Coruña chll.to/d0ba0b46
L’Indécis - Spleen & Malt chll.to/452ac9f6
Yasper, Louk - Welcome Back chll.to/593c3576
___Prima di andare___
Rimaniamo in contatto seguimi su Instagram: / ytcodebrothers
Iscriviti al mio canale: / @codebrothers
#lambdaexpression #lambdaexpressionsinjava #lambdaexpressions

Опубликовано:

 

21 июл 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 30   
@nicolaslazzari1818
@nicolaslazzari1818 8 месяцев назад
Sei veramente forte, riesci a rendere leggere lezioni su argomenti veramente pesanti e pallosi ma senza esagerare
@CodeBrothers
@CodeBrothers 8 месяцев назад
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 ✨
@eigherreight71
@eigherreight71 2 месяца назад
Fortissimo, grazie!
@CodeBrothers
@CodeBrothers 2 месяца назад
Ciao Eigherteight! Grazie mille a te 💪😎
@raffaelemaisto8967
@raffaelemaisto8967 Год назад
Veramente ben fatto. Complimenti
@CodeBrothers
@CodeBrothers Год назад
Ci fa un sacco piacere Raffaele! Ci abbiamo messo molto a prepararla 🥰
@karazero
@karazero 6 месяцев назад
Like obbligatorio, iscrizione anche, bravissimo!
@CodeBrothers
@CodeBrothers 6 месяцев назад
Ciao Karazero! Grazie mille cerchiamo di fare del nostro meglio in ogni video!:)
@antoninofabriziolabate3314
@antoninofabriziolabate3314 2 года назад
Finalmente
@CodeBrothers
@CodeBrothers 2 года назад
E vedrai la prossima che roba! 😄
@RDB-jl2we
@RDB-jl2we Год назад
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
@CodeBrothers
@CodeBrothers Год назад
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 🤟
@RDB-jl2we
@RDB-jl2we Год назад
@@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?
@CodeBrothers
@CodeBrothers Год назад
@@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! 😇
@BiagioRosarioGreco
@BiagioRosarioGreco 2 года назад
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 😂
@CodeBrothers
@CodeBrothers 2 года назад
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); }
@eigherreight71
@eigherreight71 2 месяца назад
Ma quindi la annotation @FunctionalInterface serve solo ed esclusivamente a segnalare la presenza di metodi di troppo?
@CodeBrothers
@CodeBrothers 2 месяца назад
Ehi ciao! Cosa intendi di preciso con la presenza di metodi di troppo?
@eigherreight71
@eigherreight71 2 месяца назад
@@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
@CodeBrothers
@CodeBrothers 2 месяца назад
@@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 ;)
@pincopanco131
@pincopanco131 2 года назад
Invece se voglio restituire un valore con la lambda?
@CodeBrothers
@CodeBrothers 2 года назад
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 🤘
@pincopanco131
@pincopanco131 2 года назад
@@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.
@CodeBrothers
@CodeBrothers 2 года назад
@@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!
@luigi6639
@luigi6639 Год назад
Ma quindi ogni volta che userò le lambda devo usare le functional interface? Intendo proprio come correttezza di scrittura
@CodeBrothers
@CodeBrothers Год назад
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!
@luigi6639
@luigi6639 Год назад
@@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?
@CodeBrothers
@CodeBrothers Год назад
@@luigi6639 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
@luigi6639
@luigi6639 Год назад
@@CodeBrothers perfetto quest'ultima risposta mi ha definitivamente chiarito le idee. Grazie come sempre♥️
@CodeBrothers
@CodeBrothers Год назад
@@luigi6639 ma figurati, è un piacere, buon proseguimento ✌️😎
Далее
Разбудили Любимой Песней 😂
00:14
What is Lambda Calculus and why?
8:52
Просмотров 20 тыс.