Trong lập trình Ruby, việc kiểm soát luồng chương trình là một phần quan trọng để tạo ra mã nguồn hiệu quả và dễ duy trì. Một trong những cách phổ biến để thực hiện điều này là sử dụng cấu trúc "case" và "when". Cấu trúc này cho phép bạn kiểm tra giá trị của một biểu thức và thực hiện các hành động khác nhau dựa trên giá trị đó.
Cấu trúc cơ bản của "case" và "when"
Cú pháp cơ bản của "case" và "when" trong Ruby rất đơn giản. Dưới đây là ví dụ minh họa:
case expression
when value1
# Hành động khi biểu thức có giá trị là value1
when value2
# Hành động khi biểu thức có giá trị là value2
else
# Hành động mặc định khi biểu thức không khớp với bất kỳ giá trị nào
end
Trong đó:
expression
là biểu thức cần kiểm tra.value1
,value2
có thể là các giá trị hoặc phạm vi giá trị mà bạn muốn so sánh với biểu thức.else
là tùy chọn và được thực thi nếu biểu thức không khớp với bất kỳ giá trị nào trong các câu "when".
Ví dụ cụ thể
Dưới đây là một ví dụ cụ thể hơn để minh họa cách sử dụng "case" và "when":
day = "Thursday"
case day
when "Monday"
puts "Start of the work week."
when "Wednesday"
puts "Midweek day."
when "Friday"
puts "Almost weekend."
else
puts "Just another day."
end
Kết quả của đoạn mã trên sẽ là "Just another day." vì giá trị của biến day
không khớp với bất cứ giá trị nào trong các trường hợp "when".
So sánh với "if-elsif-else"
Cấu trúc "case" và "when" thường được so sánh với cấu trúc "if-elsif-else" vì chúng đều dùng để kiểm tra nhiều điều kiện. Tuy nhiên, "case" và "when" có thể giúp mã nguồn trở nên gọn gàng hơn khi bạn cần kiểm tra cùng một biểu thức với nhiều giá trị khác nhau. Dưới đây là một ví dụ chuyển đổi từ "if-elsif-else" sang "case-when":
Sử dụng "if-elsif-else":
if day == "Monday"
puts "Start of the work week."
elsif day == "Wednesday"
puts "Midweek day."
elsif day == "Friday"
puts "Almost weekend."
else
puts "Just another day."
end
Chuyển đổi sang "case-when":
case day
when "Monday"
puts "Start of the work week."
when "Wednesday"
puts "Midweek day."
when "Friday"
puts "Almost weekend."
else
puts "Just another day."
end
Sử dụng phạm vi trong "case" và "when"
Một tính năng mạnh mẽ khác của "case" và "when" trong Ruby là khả năng sử dụng các phạm vi (range). Điều này rất hữu ích khi bạn muốn kiểm tra một biểu thức có thuộc một khoảng giá trị nào đó không. Ví dụ:
score = 75
case score
when 90..100
puts "Excellent"
when 80..89
puts "Good"
when 70..79
puts "Average"
else
puts "Below Average"
end
Kết quả của đoạn mã trên sẽ là "Average" vì giá trị của biến score
nằm trong khoảng từ 70 đến 79.
Kết luận
Cấu trúc "case" và "when" trong Ruby là một công cụ mạnh mẽ giúp lập trình viên kiểm soát luồng chương trình một cách gọn gàng và hiệu quả. Với cú pháp đơn giản, khả năng mở rộng với nhiều trường hợp kiểm tra, và tính năng sử dụng phạm vi, nó xứng đáng là một phần quan trọng trong bộ công cụ lập trình của bất kỳ ai làm việc với Ruby.
Comments