30/09/2018, 21:57

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.

Quân viết 00:05 ngày 01/10/2018

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

Huy Phạm viết 00:11 ngày 01/10/2018

Đây có phải là hàm vô danh không bạn?

Quân viết 00:06 ngày 01/10/2018

cũng có thể coi là vậy, mặc dù chưa đầy đủ lắm

Đinh Công Mạnh viết 23:58 ngày 30/09/2018

Closure nó khác như thế nào với hàm vô danh vậy bạn???

Quân viết 00:13 ngày 01/10/2018

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
Bài liên quan
0