Khóa học ruby

Ranges trong Ruby

0 phút đọc

Ranges (Khoảng) là một kiểu dữ liệu đặc biệt trong Ruby, cho phép bạn biểu diễn một chuỗi liên tục các giá trị. Chúng rất hữu ích trong nhiều trường hợp như lặp, kiểm tra điều kiện và xử lý dữ liệu. Trong bài viết này, chúng ta sẽ tìm hiểu chi tiết về Ranges trong Ruby, bao gồm cách tạo, sử dụng và các ví dụ minh họa.

Tạo Ranges

Trong Ruby, bạn có thể tạo một Range bằng cách sử dụng toán tử .. (hai dấu chấm) hoặc ... (ba dấu chấm). Sự khác biệt giữa hai toán tử này là:

  • .. (hai dấu chấm): Tạo ra một Range bao gồm cả giá trị đầu và giá trị cuối.
  • ... (ba dấu chấm): Tạo ra một Range bao gồm giá trị đầu nhưng không bao gồm giá trị cuối.

Ví dụ:

range1 = 1..5    # Range từ 1 đến 5, bao gồm cả 1 và 5
range2 = 1...5   # Range từ 1 đến 5, không bao gồm 5

Bạn cũng có thể sử dụng phương thức Range.new để tạo một Range:

range3 = Range.new(1, 5)    # Range từ 1 đến 5, không bao gồm 5
range4 = Range.new(1, 5, true)  # Range từ 1 đến 5, bao gồm cả 1 và 5

Ranges as Sequences

Ranges thường được sử dụng để biểu diễn một chuỗi liên tục các giá trị, chẳng hạn như một dãy số nguyên hoặc một chuỗi ký tự. Bạn có thể sử dụng phương thức each để lặp qua các phần tử trong Range:

(1..5).each { |i| puts i }
# Output:
# 1
# 2
# 3
# 4
# 5

Bạn cũng có thể sử dụng phương thức to_a để chuyển đổi một Range thành một mảng:

arr = (1..5).to_a
puts arr.inspect  # Output: [1, 2, 3, 4, 5]

Ranges as Conditions

Ranges cũng có thể được sử dụng để kiểm tra xem một giá trị có nằm trong khoảng giá trị của Range hay không. Bạn có thể sử dụng phương thức include? hoặc phép toán === để kiểm tra điều này:

range = 1..5
puts range.include?(3)   # Output: true
puts (range === 3)       # Output: true
puts range.include?(6)   # Output: false
puts (range === 6)       # Output: false

Ranges as Intervals

Ngoài ra, Ranges còn được sử dụng để biểu diễn các khoảng thời gian, chẳng hạn như ngày, giờ, phút hoặc giây. Bạn có thể sử dụng các lớp như Date, Time hoặc DateTime để tạo các Range biểu diễn khoảng thời gian:

require 'date'

start_date = Date.new(2023, 5, 1)
end_date = Date.new(2023, 5, 31)
date_range = start_date..end_date

date_range.each { |date| puts date }
# Output:
# 2023-05-01
# 2023-05-02
# ...
# 2023-05-31

Phương thức hữu ích cho Ranges

Ruby cung cấp một số phương thức hữu ích để làm việc với Ranges, bao gồm:

  • cover?(value): Kiểm tra xem một giá trị có nằm trong Range hay không.
  • first(n): Trả về n phần tử đầu tiên của Range.
  • last(n): Trả về n phần tử cuối cùng của Range.
  • step(step_value): Lặp qua các phần tử trong Range với bước nhảy là step_value.
  • min, max: Trả về giá trị nhỏ nhất và lớn nhất trong Range.

Ví dụ:

range = 1..10
puts range.cover?(5)   # Output: true
puts range.first(3)    # Output: [1, 2, 3]
puts range.last(2)     # Output: [9, 10]
range.step(2) { |i| puts i }
# Output:
# 1
# 3
# 5
# 7
# 9
puts range.min         # Output: 1
puts range.max         # Output: 10

Kết luận

Ranges trong Ruby là một kiểu dữ liệu rất hữu ích và linh hoạt, cho phép bạn biểu diễn và xử lý các chuỗi liên tục các giá trị một cách dễ dàng. Chúng có thể được sử dụng như một chuỗi liên tục, một điều kiện kiểm tra hoặc một khoảng thời gian. Hãy tiếp tục khám phá và thực hành với Ranges trong Ruby để trở thành một lập trình viên giỏi hơn.

Avatar
Được viết bởi

TechMely Team

Gợi ý câu hỏi phỏng vấn

entry

Ruby on Rails là gì?

entry

Is there an equivalent of “continue” in Ruby?

entry

Is everything in Ruby an object?

Bình luận

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

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

Khoá học javascript từ cơ bản đến chuyên sâuYoutube Techmely