Tham số và Giá trị Trả về trong Ruby
Trong Ruby, khi định nghĩa một hàm (method), chúng ta có thể truyền tham số vào để xử lý dữ liệu đầu vào, đồng thời sử dụng giá trị trả về để nhận kết quả của hàm. Điều này giúp hàm trở nên linh hoạt và có thể tái sử dụng trong nhiều trường hợp khác nhau.

1. Tham số trong Ruby
1.1. Hàm với tham số cơ bản
Ruby cho phép truyền tham số vào một hàm bằng cách đặt chúng trong dấu ngoặc ()
khi định nghĩa.
Ví dụ:
def xin_chao(ten)
puts "Xin chào, #{ten}!"
end
xin_chao("Nam") # Output: Xin chào, Nam!
xin_chao("Linh") # Output: Xin chào, Linh!
Giải thích:
- Hàm
xin_chao
nhận một tham sốten
và sử dụng giá trị này để in ra lời chào. - Khi gọi hàm, ta truyền vào một chuỗi như
"Nam"
hoặc"Linh"
.
1.2. Hàm với nhiều tham số
Bạn có thể truyền nhiều tham số bằng cách phân tách chúng bằng dấu phẩy ,
.
Ví dụ:
def cong(a, b)
puts "Tổng của #{a} và #{b} là #{a + b}"
end
cong(3, 5) # Output: Tổng của 3 và 5 là 8
Giải thích:
- Hàm
cong
nhận hai tham sốa
vàb
, sau đó in ra tổng của chúng.
1.3. Tham số có giá trị mặc định
Trong Ruby, bạn có thể đặt giá trị mặc định cho tham số. Nếu không truyền giá trị, Ruby sẽ sử dụng giá trị mặc định.
Ví dụ:
def gioi_thieu(ten = "Bạn")
puts "Xin chào, #{ten}!"
end
gioi_thieu # Output: Xin chào, Bạn!
gioi_thieu("Nam") # Output: Xin chào, Nam!
Giải thích:
- Nếu không truyền tham số
ten
, hàm sẽ sử dụng"Bạn"
làm giá trị mặc định.
1.4. Số lượng tham số không xác định (Splat Argument)
Nếu bạn muốn một hàm nhận nhiều tham số mà không cần biết trước số lượng, bạn có thể sử dụng *
.
Ví dụ:
def tinh_tong(*so)
puts "Tổng là: #{so.sum}"
end
tinh_tong(1, 2, 3) # Output: Tổng là: 6
tinh_tong(10, 20, 30, 40) # Output: Tổng là: 100
Giải thích:
-
*so
nhận tất cả các tham số được truyền vào dưới dạng một mảng và dùng.sum
để tính tổng.
2. Giá trị Trả về trong Ruby
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ể dùng return
nếu muốn.
2.1. Hàm có giá trị trả về mặc định
Ví dụ:
def nhan(a, b)
a * b # Giá trị cuối cùng sẽ được trả về
end
puts nhan(4, 5) # Output: 20
Giải thích:
- Ruby tự động trả về giá trị của biểu thức cuối cùng (
a * b
).
2.2. Hàm sử dụng từ khóa return
Bạn có thể dùng return
để kiểm soát giá trị trả về.
Ví dụ:
def chia(a, b)
return "Không thể chia cho 0" if b == 0
a / b
end
puts chia(10, 2) # Output: 5
puts chia(5, 0) # Output: Không thể chia cho 0
Giải thích:
- Nếu
b == 0
, hàm sẽ trả về chuỗi"Không thể chia cho 0"
. - Nếu không, Ruby sẽ trả về kết quả của
a / b
.
2.3. Trả về nhiều giá trị
Ruby cho phép một hàm trả về nhiều giá trị bằng cách sử dụng dấu phẩy ,
.
Ví dụ:
def phep_toan(a, b)
tong = a + b
hieu = a - b
tich = a * b
thuong = a / b.to_f
return tong, hieu, tich, thuong
end
t, h, ti, th = phep_toan(10, 2)
puts "Tổng: #{t}, Hiệu: #{h}, Tích: #{ti}, Thương: #{th}"
Output:
Tổng: 12, Hiệu: 8, Tích: 20, Thương: 5.0
Giải thích:
- Hàm
phep_toan
trả về 4 giá trị. - Khi gọi hàm, các giá trị trả về được gán lần lượt cho
t
,h
,ti
,th
.
Tổng kết
Tham số:
- Tham số cơ bản: Nhận một hoặc nhiều giá trị khi gọi hàm.
- Tham số mặc định: Nếu không truyền giá trị, Ruby dùng giá trị mặc định.
-
Tham số không xác định (
*
splat argument): Nhận nhiều giá trị dưới dạng mảng.
Giá trị trả về:
- Mặc định: Trả về kết quả của biểu thức cuối cùng.
-
Dùng
return
: Kiểm soát giá trị trả về. -
Trả về nhiều giá trị: Dùng dấu
,
để trả về nhiều kết quả.
Ruby cung cấp cách xử lý tham số và giá trị trả về linh hoạt, giúp mã nguồn dễ đọc và dễ mở rộng hơn.

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.
Xem thêm

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