2015-09-04 24 views
7

Tôi đang thực sự thử nghiệm lập trình hàm trong php. Tôi muốn có một số precisions về một số cuộc gọi chức năng.lập trình chức năng - chức năng gọi với tất cả tham số

làm ví dụ:

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

Có cách nào để gọi hàm addition với tất cả các thông số? Tôi đã thử theo cách này mà không có cơ hội:

echo addition(2)(3); 
+0

ps là phép nhân (sử dụng '*'), không thêm. – naomik

Trả lời

7

Bạn đang ở khá gần. PHP không có phạm vi từ vựng nên $ num1 biến không có sẵn trong chức năng quay trở lại ... cho rằng bạn phải nhập khẩu một cách rõ ràng bằng 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); 

Cú pháp bạn đề xuất echo addition(2)(3); hiện sẽ không làm việc nhưng khi php 7 đến nó sẽ. Đối với các phiên bản hiện tại của php bạn có thể sử dụng call_user_func để làm những gì bạn muốn.

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

hoạt động hoàn hảo @Orangepill! cảm ơn –

Các vấn đề liên quan