Funcții Lambda și de închidere, despre programare

  • Presupunem că aveți unele cunoștințe de bază de PHP.

Ce fel de caracteristici sunt: ​​lambda și de închidere?

funcții și de închidere Lambda - sunt obiecte de software care nu au un nume, acestea sunt puse în aplicare în cazul în care este nevoie de ajutorul lor. Funcții Notă lambda nu surprinde contextul și circuitul proiectat pentru capturarea lui. Doar spune, ambele funcții în PHP de tipul de clasa meci de închidere. iar diferențele de mai sus nu sunt fundamentale pentru utilizarea practică în PHP. În practică, veți observa doar că închiderea unei clase nu poate fi moștenită, sau pentru a crea copii. A fost introdus doar pentru uz intern - pentru tastarea.

funcţii Lambda

  • Aflați cum să utilizați funcțiile lambda ca parametri pentru alte funcții

Funcții Lambda. Acesta se dovedește a fi foarte util pentru „starea de sănătate“ a unor funcții. în special cele care necesită ca parametru funcției.

Să ne uităm la funcția usort (). orice matrice de sortare. Pentru activitatea sa este nevoie de doi parametri. Primul - o matrice care trebuie să fie sortate. Al doilea - o funcție cu două argumente. Această funcție compară cele două valori care au fost transmise. Ar trebui să se întoarcă 0 dacă acestea sunt egale, -1 în cazul în care prima este mai mică, 1 în cazul în care al doilea este mai puțin.

Imaginați-vă că suntem cu toții într-un singur loc în programul pe care doriți să sortați o serie de obiecte dintr-un anumit domeniu, nu avem nevoie să declare o funcție separată, vom folosi o funcție lambda. Listarea №1 arată cum se utilizează o funcție lambda pentru a sorta matrice.

Listarea №1 (linia funcția lambda evidențiată):

În acest exemplu, umplerea matrice $ anumber obiecte care sunt create pe baza clasei număr natural. Fiecare obiect este stocat număr aleatoriu, care este accesat prin intermediul getNumber () și setNumber (). Apoi matrice de sortare folosind funcțiile lambda. Pentru usort () este necesar ca al doilea parametru funcție a fost specificat cu două argumente, fiecare dintre acestea trebuind să corespundă tipului elementelor de matrice să fie sortate. După umplerea matrice și la sfârșitul programului se produce matrice de ieșire.

  • Utilizarea funcțiilor de context

Listarea №2 (linia evidențiată eroare):

În acest exemplu, există o creație a unei linii a unei matrice multidimensionale prin legarea tuturor elementelor sale prin spațiul liber. Adeziv standard pentru funcția utilizare implozie (). dar acest lucru nu este cazul - nu se lipească matrice împreună multi-dimensionale. Poate pentru unii oameni acest lucru va fi un exemplu de drum.

Există o caracteristică ce ar trebui să fie luate în considerare atunci când utilizați circuitul în metoda (metoda - un membru funcție a unei clase). Se pare că (de închidere) nu surprinde această variabilă $ internă (responsabil pentru instanța curentă). Pentru ei încă mai trece în circuit, este necesar să se utilizeze o variabilă locale, cum ar fi atât de $ = $ auto acest lucru. și apoi transmite la utilizarea circuitului ($ auto).

Orice întrebări? Bine ați venit la comentarii.