1 of 24

Tehnici avansate pentru

dezvoltarea aplicațiilor mobile

Kotlin - Tipul funcție și expresii lambda

2 of 24

Funcția ca tip de date

  • Funcția este și un tip de date în Kotlin
  • Putem:
    • Stoca o funcție într-o variabilă
    • Pasa o funcție ca argument altei funcții
    • Returna o funcție dintr-o altă funcție

  • Ne permite să:
    • Schimbăm comportamentul aplicației la runtime
    • Să avem Composables imbricate

Kotlin - Tipul funcție și expresii lambda

2

3 of 24

Funcția ca tip de date

  • Operatorul function reference (::) este folosit pentru referirea la o funcție ca o valoare

Kotlin - Tipul funcție și expresii lambda

3

4 of 24

Expresie lambda

  • Definirea unei funcții fără cuvântul cheie fun

  • Expresie lambda = acolade + corpul funcției

  • Stocarea funcției într-o variabilă

  • Poate returna valoarea ultimei expresii din corpul funcției

Kotlin - Tipul funcție și expresii lambda

4

5 of 24

Expresie lambda

Kotlin - Tipul funcție și expresii lambda

5

6 of 24

Expresie lambda - Exemplu

  • Ambele apeluri printează același lucru

Kotlin - Tipul funcție și expresii lambda

6

7 of 24

Definirea tipului funcție

  • Sintaxa pentru tipul unei funcții:
    • listă de parametri, săgeată, tipul de retur

Kotlin - Tipul funcție și expresii lambda

7

8 of 24

Definirea tipului funcție

  • Funcție fără parametrii care nu returnează nimic
    • => tipul de date: () -> Unit
    • variabila trick - tipul de date inferat din valoare

  • O funcție primește 2 Int-uri și returnează un String
    • => tipul de date: (Int, Int) -> String

Kotlin - Tipul funcție și expresii lambda

8

9 of 24

Funcția ca tip de retur

  • Putem întoarce o funcție dintr-o altă funcție
    • Trebuie ca tipul de retur = tip funcție
  • Trebuie specificat tipul de date al funcției

Kotlin - Tipul funcție și expresii lambda

9

10 of 24

Funcția ca tip de retur - exemplu

Kotlin - Tipul funcție și expresii lambda

10

11 of 24

Pasarea unei funcții ca argument

  • Parametrul extraTreat are tipul (Int) -> String

Kotlin - Tipul funcție și expresii lambda

11

12 of 24

Expresie lambda cu parametri

  • Parametri și corpul funcției între acolade
  • Săgeata separă parametri de corpul funcției

Kotlin - Tipul funcție și expresii lambda

12

13 of 24

Pasarea unei funcții ca argument

  • coins = expresie lambda cu parametru

Kotlin - Tipul funcție și expresii lambda

13

14 of 24

Tipul funcție nullable

  • Pentru a face un tip de funcție nullable - adăugăm ?

  • Un tip () -> String devine (() -> String)?

Kotlin - Tipul funcție și expresii lambda

14

15 of 24

Tipul funcție nullable - exemplu

15

16 of 24

Expresii lambda - sintaxa concisă

  • Un singur parametru
    • => putem omite numele parametrului și săgeata
    • Ne vom referi la parametru ca it

16

17 of 24

Pasarea expresiei lambda în funcție

  • Expresie lambda = literal de tip funcție
  • Putem pasa o expresie lambda direct ca argument al unei funcții

Kotlin - Tipul funcție și expresii lambda

17

18 of 24

Pasarea expresiei lambda în funcție

  • Se poate condensa expresia lambda într-o singură linie
  • Nu mai e nevoie de o variabilă să refere expresia lambda

Kotlin - Tipul funcție și expresii lambda

18

19 of 24

Sintaxa Trailing Lambda

  • Dacă avem o expresie lambda ca ultim parametru
    • Putem muta expresia lambda la sfârșit, după paranteză
    • Separăm expresia lambda de ceilalți parametri

  • Exemplu:

Kotlin - Tipul funcție și expresii lambda

19

20 of 24

Funcții de ordin superior

  • Funcție de ordin superior (high-order)
    • = funcție care are ca argument sau valoare de retur o funcție

  • Kotlin oferă multe funcții de ordin superior
    • De exemplu repeat()
      • times = numărul de iterații
      • action = funcția care trebuie rulată, primește un Int și returnează Unit

Kotlin - Tipul funcție și expresii lambda

20

21 of 24

Funcția repeat

  • Putem transforma un for într-un repeat
  • Trailing lambda
  • iteration - de la 0 la times - 1

Kotlin - Tipul funcție și expresii lambda

21

22 of 24

Funcția repeat - exemplu

  • Un singur parametru => îl putem omite și folosim it
  • Va rula expresia lambda de 3 ori

Kotlin - Tipul funcție și expresii lambda

22

23 of 24

Bibliografie

Kotlin - Tipul funcție și expresii lambda

23

24 of 24

Cuvinte cheie

  • Tipul de date funcție
  • Expresie lambda
  • Tipul funcție nullable
  • Trailing Lambda
  • Funcții de ordin superior
  • Funcția repeat

Kotlin - Tipul funcție și expresii lambda

24

24