Tôi đọc trên internet nhiều hướng dẫn giải thích cách sử dụng lambdas với thư viện chuẩn (chẳng hạn như std::find
), và tất cả đều rất thú vị, nhưng tôi không thể tìm thấy bất kỳ giải thích nào về cách sử dụng lambda cho riêng mình chức năng.Làm thế nào để khai báo một hàm chấp nhận một lambda?
Ví dụ:
int main()
{
int test = 5;
LambdaTest([&](int a) { test += a; });
return EXIT_SUCCESS;
}
Làm thế nào tôi nên tuyên bố LambdaTest
? Loại đối số đầu tiên của nó là gì? Và sau đó, làm thế nào tôi có thể gọi hàm ẩn danh đi qua nó - ví dụ - "10" làm đối số của nó?
Đây là câu trả lời hay nhất. – Puppy
Trong trường hợp lỗi, các thông báo lỗi sẽ khó hiểu. – liori
Nó phụ thuộc cho dù đó là tốt nhất. Điều này sử dụng một mẫu, và cái kia thì không. Điều này có nghĩa là hàm không thể ảo được nữa và không thể được định nghĩa riêng trong tệp cpp. 'std :: function' hoàn toàn có khả năng nhận các kiểu lớp đối tượng hàm, mặc dù hơi chậm khi gọi. Nhưng sự khác biệt đó là không đáng kể đối với hầu hết các ứng dụng :) –