Computer >> Máy Tính >  >> Lập trình >> Ruby

Cách sử dụng phương pháp Ruby Grep (Có ví dụ)

Hãy nói về grep phương pháp.

Phương pháp này có thể giúp gì cho bạn?

Bạn có thể sử dụng Grep để lọc các đối tượng có thể liệt kê, như Mảng &Dãy.

“Nhưng select đã làm được điều đó!”

Có, nhưng grep hoạt động theo một cách khác và nó tạo ra các kết quả khác.

Hãy xem một số ví dụ.

Ví dụ về phương pháp Ruby Grep

Cho mảng này:

objects = ["a", "b", "c", 1, 2, 3, nil]

Bạn có thể sử dụng grep để chỉ lấy các chuỗi :

objects.grep(String)
# ["a", "b", "c"]

Chỉ số nguyên:

objects.grep(Integer)
# [1, 2, 3]

Hoặc mọi thứ không phải là con số không :

objects.grep_v(NilClass)
# ["a", "b", "c", 1, 2, 3]

Nếu bạn có một mảng từ:

fruit = ["apple", "orange", "banana"]

Bạn có thể tìm thấy tất cả các từ bắt đầu bằng “a”:

fruit.grep(/^a/)
# ["apple"]

Hoặc kết thúc bằng “e” :

fruit.grep(/e$/)
# ["apple", "orange"]

Và nếu bạn có một danh sách các số:

numbers = [9, 10, 11, 20]

Bạn có thể nhận được danh sách tất cả các số trong một phạm vi :

numbers.grep(5..10)
# [9, 10]

Bạn có thể kết hợp phương pháp bản đồ và chọn thành một phương pháp khi bạn sử dụng một khối:

numbers.grep(5..10) { |n| n * 2 }
# [18, 20]

Nếu bạn muốn trở nên lạ mắt…

times_two = ->(x) { x * 2 }

numbers.grep(5..10, &times_two)
# [18, 20]

Khá tuyệt, phải không?

Grep vs Select:Hiểu sự khác biệt

Grep hoạt động như thế nào?

Bí quyết là với === phương thức (ba dấu bằng) trong Ruby.

Grep gọi phương thức này trên bất kỳ đối số nào bạn chuyển cho nó.

Và hóa ra là các lớp, biểu thức chính quy &phạm vi đều triển khai === .

Họ triển khai phương thức này theo cách có ý nghĩa đối với lớp.

Ví dụ :

  • Các lớp (như Integer hoặc Array ), so sánh với lớp đối tượng đã cho.
  • Phạm vi kiểm tra xem số có được bao gồm trong phạm vi hay không.
  • Cụm từ thông dụng kiểm tra xem có khớp hay không.

Vì vậy, khi bạn nói :

objects.grep(Integer)

Điều bạn thực sự đang nói là :

objects.select { |obj| Integer === obj }

Trong một thời gian dài, tôi đã nhầm lẫn về grep…

Cho đến khi tôi hiểu điều này.

select phương pháp lọc danh sách dựa trên kết quả của khối.

Nếu khối đánh giá là true, thì phần tử đó sẽ được chọn.

Nhưng grep chỉ cần so sánh hai thứ bằng cách sử dụng === .

Bạn có thể nói rằng grep là một phiên bản select chuyên biệt hơn !

Bản đồ tư duy Ruby Grep

Cách sử dụng phương pháp Ruby Grep (Có ví dụ)

Xem hướng dẫn bằng video

Tóm tắt

Bạn đã học về phương thức grep trong Ruby! Đó là một phương pháp rất hữu ích khi bạn hiểu cách hoạt động của nó.

Đảm bảo thực hành để điều này chìm vào trong.

Thực hành là chìa khóa để thành thạo!