2015-09-04 15 views
7

Attualmente sto sperimentando la programmazione funzionale in php. Mi piacerebbe avere delle precisioni su alcune chiamate di funzione.programmazione funzionale - funzione di chiamata con tutti i parametri

come esempio:

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); 

Esiste un modo per chiamare la funzione aggiunta con tutti i parametri? Ho cercato in questo modo con nessuna possibilità:

echo addition(2)(3); 
+0

ps che è la moltiplicazione (utilizzando '*'), non l'aggiunta. – naomik

risposta

7

Tu sei abbastanza vicino. PHP non ha scope lessicale in modo che il $ num1 variabile non è disponibile all'interno della funzione tornato ... per questo è necessario importare esplicitamente usando 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); 

La sintassi avete proposto echo addition(2)(3); attualmente non funziona, ma quando php 7 arriva lo farà. Per le versioni correnti di php puoi usare call_user_func per fare ciò che vuoi.

echo call_user_func(addition(2), 3); 
+0

funziona perfettamente @Orangepill! Grazie –

Problemi correlati