Định nghĩa và Gọi Hàm trong Ruby

Tạo bởi Hoàng Vũ, chỉnh sửa cuối lúc 4 tháng 2, 2025

Trong Ruby, hàm (method) là một tập hợp các câu lệnh được đóng gói để thực hiện một nhiệm vụ cụ thể. Việc sử dụng hàm giúp tái sử dụng mã, làm cho chương trình dễ đọc và bảo trì hơn.

1. Định nghĩa hàm trong Ruby

Trong Ruby, chúng ta sử dụng từ khóa def để định nghĩa một hàm. Cấu trúc chung như sau:

def ten_ham(tham_so1, tham_so2, ...)
  # Code thực thi
  return gia_tri  # (Có thể bỏ qua từ khóa `return`)
end

Ví dụ 1: Định nghĩa một hàm đơn giản

def chao_mung
  puts "Xin chào, Ruby!"
end

Hàm trên khi được gọi sẽ in ra dòng chữ "Xin chào, Ruby!".

2. Gọi hàm trong Ruby

Để gọi một hàm, chỉ cần sử dụng tên hàm:

chao_mung  # Kết quả: "Xin chào, Ruby!"

Lưu ý rằng nếu hàm không có tham số, ta có thể gọi mà không cần dấu ().

3. Hàm có tham số

Hàm có thể nhận tham số để thực hiện xử lý với dữ liệu đầu vào.

Ví dụ 2: Hàm có tham số

def xin_chao(ten)
  puts "Xin chào, #{ten}!"
end

xin_chao("Nam")  # Kết quả: "Xin chào, Nam!"
xin_chao("Linh") # Kết quả: "Xin chào, Linh!"

4. Hàm có giá trị trả về

Mặc định, Ruby trả về giá trị của biểu thức cuối cùng trong hàm mà không cần từ khóa return. Tuy nhiên, bạn vẫn có thể sử dụng return nếu muốn.

Ví dụ 3: Hàm trả về giá trị

def tong(a, b)
  a + b  # Giá trị cuối cùng được trả về
end

puts tong(3, 5)  # Kết quả: 8

Ví dụ 4: Sử dụng return

def nhan(a, b)
  return a * b
end

puts nhan(4, 6)  # Kết quả: 24

5. Hàm có giá trị mặc định cho tham số

Nếu một tham số không được truyền vào, Ruby có thể sử dụng giá trị mặc định.

Ví dụ 5: Giá trị mặc định

def gioi_thieu(ten = "Bạn")
  puts "Xin chào, #{ten}!"
end

gioi_thieu         # Kết quả: "Xin chào, Bạn!"
gioi_thieu("Nam")  # Kết quả: "Xin chào, Nam!"

6. Hàm nhận nhiều tham số không xác định (Splat Argument)

Bạn có thể sử dụng * để truyền số lượng tham số không giới hạn.

Ví dụ 6: Nhận nhiều tham số

def tinh_tong(*so)
  so.sum  # Tính tổng các số truyền vào
end

puts tinh_tong(1, 2, 3)         # Kết quả: 6
puts tinh_tong(4, 5, 6, 7, 8)   # Kết quả: 30

7. Hàm dạng khối (Lambda & Proc)

Ngoài cách định nghĩa thông thường, Ruby còn có lambdaproc, giúp định nghĩa các hàm ngắn gọn hơn.

Ví dụ 7: Dùng lambda

cong = ->(a, b) { a + b }
puts cong.call(4, 5)  # Kết quả: 9

Ví dụ 8: Dùng proc

tru = Proc.new { |a, b| a - b }
puts tru.call(10, 3)  # Kết quả: 7

Tổng kết

  • Dùng def để định nghĩa hàm.
  • Gọi hàm bằng cách sử dụng tên hàm (ten_ham).
  • Hàm có thể nhận tham số và có giá trị trả về.
  • Có thể sử dụng giá trị mặc định cho tham số.
  • Dùng * để nhận số lượng tham số không xác định.
  • Lambda và Proc là cách định nghĩa hàm ngắn gọn.
Website Logo

Với hơn 10 năm kinh nghiệm lập trình web và từng làm việc với nhiều framework, ngôn ngữ như PHP, JavaScript, React, jQuery, CSS, HTML, CakePHP, Laravel..., tôi hy vọng những kiến thức được chia sẻ tại đây sẽ hữu ích và thiết thực cho các bạn.

Bình luận

Website Logo

Chào, tôi là Vũ. Đây là blog hướng dẫn lập trình của tôi.

Liên hệ công việc qua email dưới đây.

lhvuctu@gmail.com

Chúng Tôi Trên

Bạn đang muốn học về lập trình website?

Bạn cần nâng cao kiến thức chuyên nghiệp hơn để nâng cao cơ hội nghề nghiệp? Liên hệ