Ví dụ:Thực hiện năng suất trong C
int getNext(int n) {
while (TRUE) {
n = n+1;
yield n;
}
}
int main() {
while (TRUE) {
int n = getNext(1);
if (n > 42)
break;
printf("%d\n",n);
}
}
như vậy rằng mã trên sẽ in tất cả các số từ 1 đến 42. Tôi nghĩ làm yield
thay đổi địa chỉ của GetNext để hướng dẫn sau yield
. Nhưng tôi không thể hiểu làm thế nào tôi sẽ lưu bối cảnh (đăng ký/biến) kể từ khi ngăn xếp sẽ được chạy qua bởi các chức năng người gọi.
Lưu ý:
Tôi nhận thấy rằng mã ở trên có thể dễ dàng được triển khai bởi biến tĩnh, nhưng đó không phải là vấn đề.
Tuy nhiên bạn làm điều đó, bạn sẽ không thể làm điều đó với sự dễ dàng của cú pháp C# (hoặc bất kỳ thứ gì). Đây là những biến ngữ cảnh và các con trỏ hàm. – Joe
@Joe Đây là học thuật thuần túy, chỉ cần tự hỏi ý tưởng chung là gì. – Shmoopy
Hãy xem '' có thể. –