yield có nghĩa là gì trong PHP?

{{FormatNumbertoThousand(model.total_like)}} lượt thích
251 lượt xem
PHP senior

Vấn đề:

Giải thích đoạn mã bên dưới và yield có chức năng gì:

function a($items) {
   foreach ($items as $item) {
      yield $item + 1;
   }
}

Giải pháp:

Từ khóa yield trả về dữ liệu từ một generator function. Một generator function thực sự là một cách thức nhỏ gọn và hiệu quả hơn để viết một Iterator. Nó cho phép bạn xác định một hàm sẽ tính toán và trả về các giá trị trong khi bạn đang lặp nó.

Vì vậy, function trong câu hỏi trên gần giống như function này mà không có yield:

function b($items) {
   $result = [];
   foreach ($items as $item) {
      $result[] = $item + 1;
   }
   return $result;
}

Chỉ với một sự khác biệt rằng a() trả về một generator và b() chỉ là một mảng đơn giản. Bạn có thể lặp trên cả hai.

Phiên bản generator của hàm không phân bổ một mảng đầy đủ và do đó ít đòi hỏi bộ nhớ hơn. Generator có thể được sử dụng để giải quyết các giới hạn bộ nhớ. Bởi vì generator chỉ tính toán các giá trị thu được của chúng theo yêu cầu, chúng rất hữu ích để biểu diễn các trình tự tốn kém hoặc không thể tính toán cùng một lúc.

Câu hỏi tiếp theo: $$ có nghĩa là gì?
{{login.error}}