2015-09-04 20 views
7

W rzeczywistości eksperymentuję z programowaniem funkcjonalnym w php. Chciałbym mieć kilka szczegółów dotyczących niektórych funkcji.programowanie funkcjonalne - funkcja wywołania z wszystkimi parametrami

jako przykład:

function addition($num1){ 
    return function ($num2) use ($num1){ 
     return $num1+$num2; 
    } 
} 
$add_2_to = addition(2); 
echo $add_2_to(3); 
echo $add_2_to(4); 

Czy istnieje sposób, aby wywołać funkcję dodawania ze wszystkimi parametrami? Próbowałem w ten sposób bez szans:

echo addition(2)(3); 
+0

ps to mnożenie (za pomocą '*'), nie dodawanie. – naomik

Odpowiedz

7

Jesteś całkiem blisko. PHP nie posiada zakres leksykalny więc zmienna $ num1 nie jest dostępny w ramach funkcji wrócił ... na które trzeba wyraźnie importować go za pomocą use

function addition($num1){ 
    return function ($num2) use ($num1){ 
     return $num1*$num2; 
    }; 
} 
$add_2_to = addition(2); 
echo $add_2_to(3); 
echo $add_2_to(4); 

Składnia Ci proponowaną echo addition(2)(3); obecnie nie działa, ale kiedy php 7 nadejdzie. W przypadku aktualnych wersji php możesz użyć funkcji call_user_func, aby zrobić to, co chcesz.

+0

działa idealnie @Orangepill! dzięki –

Powiązane problemy