Menu
CoddyTech

Lambda với tham số

Thuộc phần Logic và luồng chương trình trong hành trình C++ của Coddy. Bài học 43 trên 56.

Giờ bạn đã hiểu cú pháp lambda cơ bản, hãy làm cho lambda hữu ích hơn bằng cách thêm tham số. Giống như hàm thông thường, lambda có thể nhận giá trị đầu vào để xử lý.

Để thêm tham số vào lambda, hãy đặt chúng trong dấu ngoặc đơn sau mệnh đề capture:

auto addNumbers = [](int a, int b) {
    std::cout << "Sum: " << (a + b) << std::endl;
};

addNumbers(5, 3);  // In ra: Sum: 8

Cú pháp tham số hoạt động giống hệt cú pháp tham số thông thường của hàm (function): bạn ghi kiểu dữ liệu trước, sau đó là tên tham số. Bạn có thể dùng nhiều tham số, ngăn cách nhau bằng dấu phẩy, như minh họa ở trên.

Bạn cũng có thể gọi ngay một lambda có tham số mà không cần lưu lại:

[](int x, int y) {
    std::cout << "Product: " << (x * y) << std::endl;
}(4, 7);  // In ra: Product: 28

Khả năng nhận tham số này giúp hàm lambda linh hoạt và có thể tái sử dụng hơn, cho phép bạn tạo các hàm nhỏ có thể xử lý những giá trị đầu vào khác nhau mỗi lần được gọi.

challenge icon

Thử thách

Dễ

Tạo một chương trình minh họa biểu thức lambda có tham số bằng cách xây dựng một máy tính đơn giản thực hiện các phép toán khác nhau. Thử thách này sẽ kiểm tra mức độ hiểu biết của bạn về cách định nghĩa biểu thức lambda nhận giá trị đầu vào và xử lý chúng.

Chương trình sẽ nhận các giá trị đầu vào sau:

  • Hai số nguyên num1 và num2 đại diện cho các số dùng để tính toán
  • Một ký tự operation đại diện cho phép toán cần thực hiện

Chương trình của bạn cần:

  1. Tạo một biểu thức lambda có tên add, nhận hai tham số số nguyên và in ra tổng của chúng theo định dạng Sum: [result]
  2. Tạo một biểu thức lambda có tên subtract, nhận hai tham số số nguyên và in ra hiệu của chúng theo định dạng Difference: [result]
  3. Tạo một biểu thức lambda có tên multiply, nhận hai tham số số nguyên và in ra tích của chúng theo định dạng Product: [result]
  4. Đọc hai số và ký tự phép toán từ đầu vào
  5. Dựa vào ký tự phép toán, gọi biểu thức lambda thích hợp với hai số đó

Ký tự phép toán sẽ là một trong các ký tự sau:

  • + để cộng, gọi biểu thức lambda add
  • - để trừ, gọi biểu thức lambda subtract
  • * để nhân, gọi biểu thức lambda multiply

Dùng chính xác định dạng đầu ra sau tùy theo phép toán:

Phép cộng:

Sum: [result]

Phép trừ:

Difference: [result]

Phép nhân:

Product: [result]

Lưu ý rằng bạn định nghĩa tham số lambda bên trong dấu ngoặc đơn, sau mệnh đề capture, bằng cùng cú pháp như tham số của hàm thông thường. Lưu mỗi biểu thức lambda vào một biến bằng từ khóa auto, sau đó gọi biểu thức lambda thích hợp dựa trên ký tự phép toán đầu vào bằng câu lệnh if-else hoặc câu lệnh switch.

Tự làm thử

#include <iostream>
using namespace std;

int main() {
    // Đọc đầu vào
    int num1, num2;
    char operation;
    cin >> num1 >> num2 >> operation;
    
    // TODO: Tạo các biểu thức lambda để cộng, trừ và nhân
    // TODO: Dùng câu lệnh if-else hoặc switch để gọi lambda phù hợp với phép toán
    
    return 0;
}
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Logic và luồng chương trình

Tự luyện tập: Trình biên dịch C++ online