Closure trong php là gì?

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.

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
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?