http://php.net/Closure
Tiếng anh mình rất tệ nên đọc manual thì không hiểu gì hết nên lên đây hỏi mọi người Closure trong php nó là gì??? Cho mình ví dụ mình họa.
Closure trong php là gì?
Nếu bác đã làm việc với các ngôn ngữ lập trình hàm hoặc tương đương thì sẽ k thấy xa lạ gì về closure, nói đơn giản nó chính là con trỏ hàm/1 object hàm, có thể truyền, đối xử như 1 kiểu dữ liệu thông thường, có khả năng thực thi. Đối với 1 số ngôn ngữ thì khái niệm lamda expression cũng có ý nghĩa gần với closure đấy
1 Like
Đây có phải là hàm vô danh không bạn?
cũng có thể coi là vậy, mặc dù chưa đầy đủ lắm
1 Like
Closure nó khác như thế nào với hàm vô danh vậy bạn???
closure ngoài việc ứng xử giống như hàm vô danh còn có thể capture các biến xung quanh bên ngoài scope thành 1 thuộc tính của closure, điều này biến closure vừa ứng xử như hàm lại vừa ứng xử như 1 object.
ví dụ:
func foo(): () -> int {
var x = 0;
func bar(): int {
x = x + 1;
return x;
}
return bar;
}
var someFoo = foo();
var value = someFoo(); // value = 1
value = someFoo(); // value = 2 and so on
var someAnotherFoo = foo();
var value2 = someAnotherFoo(); // value2 = 1
value2 = someAnotherFoo(); // value2 = 2 and so on
1 Like