bytes.cat

La wiki d'FP d'informàtica

Eines de l'usuari

Eines del lloc


funcions_lambda

Diferències

Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.

Enllaç a la visualització de la comparació

Ambdós costats versió prèvia Revisió prèvia
Següent revisió
Revisió prèvia
funcions_lambda [2026/09/21 17:49]
enric_mieza_sanchez [Exemples en Kotlin i Android]
funcions_lambda [2026/09/21 18:16] (actual)
enric_mieza_sanchez [Funcions Lambda]
Línia 5: Línia 5:
 **Una interfície funcional** és un concepte de Java (formalitzat a Java 8) que **designa una interfície amb un únic mètode abstracte**. Això permet que una expressió lambda, una referència a mètode o una classe anònima la puguin implementar directament, sense necessitat de crear una classe completa. **Una interfície funcional** és un concepte de Java (formalitzat a Java 8) que **designa una interfície amb un únic mètode abstracte**. Això permet que una expressió lambda, una referència a mètode o una classe anònima la puguin implementar directament, sense necessitat de crear una classe completa.
  
-Actualment les funcions lambda ens resulten molt útils per implementar interfícies funcionals de forma concisa i llegible.+Actualment les funcions lambda ens resulten molt útils per implementar interfícies funcionals de forma concisa i llegible. En desenvolupaments amb moltes //callbacks// com en les interfícies gràfiques en general, i Android en particular, son molt pràctiques per reduir el codi.
  
 {{tag> #Dam #DamMp08 #DamMp08Uf1 #DamMp08Uf01 #DamMp08Uf2 Android mobile java kotlin }} {{tag> #Dam #DamMp08 #DamMp08Uf1 #DamMp08Uf01 #DamMp08Uf2 Android mobile java kotlin }}
  
 Característiques principals: Característiques principals:
-  * Sintaxi reduïda: Eliminen molta boilerplate code+  * Sintaxi reduïda: Eliminen molt //boilerplate code//
   * Funcions anònimes: No necessiten nom   * Funcions anònimes: No necessiten nom
   * Més llegibles: Especialment útils per //callbacks// i //event handlers//   * Més llegibles: Especialment útils per //callbacks// i //event handlers//
  
-Sintaxi bàsica+Sintaxi bàsica en Java:
   (paràmetres) -> { cos de la funció }   (paràmetres) -> { cos de la funció }
 +
 +Sintaxi bàsica en Kotlin:
 +  { paràmetres -> cos de la funció }
  
 \\ \\
  
-===== Exemples en Java i Android =====+===== Exemples en Android ===== 
 + 
 +Per implementar una //callback// en un botó ens cal crear un objecte ''View.OnClickListener'' i particularitzar (sobreescrivint) la funció ''onClick'', que és l'únic mètode abstracte que té. Per tant, la lambda, sense explicitar-ho farà referència a aquest mètode. 
  
-Aquest seria el codi explícit per a Android en Java:+==== Java ==== 
 +Aquest seria el codi explícit per a Android en Java, creant l'objecte ''OnClickListener'' i sobreescrivint la seva funció ''onClick'':
  
 <code java> <code java>
Línia 35: Línia 42:
 </code> </code>
  
-Si ho implementem en versió lambda ens quedaria així:+Si ho implementem en versió lambda ens quedaria molt mes concís:
  
 <code java> <code java>
Línia 45: Línia 52:
 }); });
 </code> </code>
 +
 +Podem utilitzar punters a ''MainActivity'' (''MainActivity.this'') sempre que implementem aquest codi a dins d'ella, que és el més habitual. Aquest codi en concret sol estar dins el mètode ''MainActivity.onCreate''.
  
 \\ \\
  
-===== Exemples en Kotlin i Android =====+==== Kotlin ====
  
-La definició explícita, sense lambda seria aquesta:+La definició explícita, sense lambdaseria aquesta:
 <code kotlin> <code kotlin>
 val myButton = findViewById<Button>(R.id.my_button) val myButton = findViewById<Button>(R.id.my_button)
Línia 61: Línia 70:
 </code> </code>
  
-I emprant lambda:+La peculiaritat en Kotlin és que una interfície com ''View.OnClickListener'' s'instancia amb ''object : View.OnClickListener'', sense parèntesis (com sí que es fa en Java). 
 + 
 +Si emprem lambda:
  
 <code kotlin> <code kotlin>
Línia 70: Línia 81:
 } }
 </code> </code>
 +
 +En kotlin, fins i tot podriem eliminar el paràmetre ''v ->'' si no el fem servir (com en aquest cas).
  
funcions_lambda.1790012964.txt.gz · Darrera modificació: 2026/09/21 17:49 per enric_mieza_sanchez