0
0
Lập trình
Harry Tran
Harry Tran106580903228332612117

Tìm hiểu về Block, Proc và Lambda trong Ruby: Ứng dụng và Sự khác biệt

Đăng vào 3 tuần trước

• 2 phút đọc

Chủ đề:

LambdaProcBlock

Giới thiệu về Block, Proc và Lambda trong Ruby

Block, Procs và Lambdas là những tính năng quan trọng trong ngôn ngữ lập trình Ruby, cho phép người dùng chuyển mã lệnh vào một phương thức và thực thi mã đó vào thời điểm phù hợp. Việc sử dụng các tính năng này giúp tối ưu hóa và tổ chức mã nguồn một cách hiệu quả hơn.

1. Block trong Ruby

Block có thể được coi như một khối mã lệnh nằm trong dấu { ... } hoặc do ... end. Chúng cho phép nhóm các lệnh lại thành một khối để thực thi sau này. Có hai loại block:

  • Block đơn: sử dụng dấu { ... } cho các lệnh đơn.
  • Block bội: sử dụng do ... end cho các lệnh nhiều dòng.

2. Proc trong Ruby

Proc là một đối tượng đại diện cho một khối mã (block) có thể được lưu trữ trong một biến và thực thi khi cần. Điều này rất hữu ích cho việc gói gọn logic và truyền nó như tham số cho các phương thức hoặc lưu trữ để sử dụng sau.

Cách tạo một đối tượng Proc:

Bạn có thể tạo một đối tượng Proc bằng cách sử dụng Proc.new, hoặc cú pháp lambda với ->.

Ví dụ:

ruby Copy
my_proc = Proc.new { |x| puts "Hello #{x}" }
my_lambda = ->(x) { puts "Hello #{x}" }

Cách gọi một đối tượng Proc:

Để gọi Proc, bạn cần sử dụng phương thức call:

ruby Copy
my_proc.call("viet") # => Hello Viet
my_lambda.call("viet") # => Hello Viet

3. Sự khác biệt giữa Proc và Lambda

Mặc dù Proc và Lambda có chức năng tương tự, nhưng chúng có những điểm khác biệt quan trọng:

  • Kiểm tra số lượng tham số: Lambda kiểm tra số lượng tham số đầu vào nghiêm ngặt hơn Proc. Nếu số lượng tham số không khớp với định nghĩa, lambda sẽ ném lỗi. Ngược lại, Proc sẽ gán giá trị nil cho các tham số thiếu hoặc bỏ qua các tham số thừa.

  • Hành vi của từ khóa Return: Trong Lambda, từ khóa return chỉ kết thúc Lambda đó, trong khi đối với Proc, return sẽ kết thúc toàn bộ phương thức chứa nó.

4. Ứng dụng của Proc và Lambda

  • Truyền mã: Proc thường được sử dụng để truyền một block mã vào phương thức.

  • Lưu trữ và tái sử dụng logic: Proc cho phép lưu trữ logic và sử dụng lại ở nhiều nơi trong chương trình, giúp giảm thiểu mã lặp lại và tăng khả năng bảo trì.

Kết luận

Block, Proc và Lambda là những công cụ mạnh mẽ trong Ruby giúp tổ chức và tối ưu hóa mã nguồn. Việc hiểu rõ và biết cách sử dụng chúng sẽ giúp lập trình viên viết mã hiệu quả hơn.
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào