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

Cách sử dụng Ruby Any, All, None &One

Hôm nay, bạn sẽ tìm hiểu về 4 phương thức Enumerable sẽ giúp bạn kiểm tra một câu lệnh điều kiện dựa trên một mảng các phần tử, một hàm băm hoặc bất kỳ đối tượng nào khác bao gồm mô-đun Enumerable.

Cách sử dụng Ruby Any, All, None &One

4 phương thức này trả về true hoặc false .

Nội dung

  • 1 Ruby All Method
  • 2 Mảng Tất cả &Mảng trống
  • 3 Ruby None Method
  • 4 Ruby Any Method
  • 5 Phương pháp Ruby One
  • 6 Tính năng mới của Ruby 2.5
  • 7 Tóm tắt
    • 7.1 Có liên quan

Hãy làm điều này!

Ruby All Method

Nếu bạn muốn kiểm tra xem tất cả các chuỗi bên trong một mảng có kích thước cụ thể hay không.

Bạn có thể làm điều này :

def all_words_have_specific_size?(words)
  return false if words.empty?

  words.each do |str|
    return false unless str.size == 5
  end

  true
end

words = ["bacon", "orange", "apple"]

all_words_have_specific_size?(words)
# false

Chúng tôi kiểm tra mọi chuỗi, nếu kích thước không như chúng tôi muốn, chúng tôi trả về false , nếu không, chúng tôi trả về true ở phần cuối.

Đó là rất nhiều mã cho một cái gì đó như thế này.

Hãy tưởng tượng bạn phải thiết lập điều này mọi lúc bạn muốn thực hiện loại kiểm tra này.

Còn rất nhiều việc!

Điều duy nhất chúng tôi quan tâm ở đây là:

str.size == 5

Đó là điều kiện chúng tôi đang kiểm tra .

Có cách nào tốt hơn để làm điều này không?

Vâng!

Sử dụng all? phương pháp để làm tất cả công việc khó khăn cho bạn.

Đây là cách thực hiện :

strings.all? { |str| str.size == 5 }

Thế là xong.

Tất cả &Mảng trống

Một điều bạn phải biết:

all? phương thức sẽ trả về true nếu bạn gọi nó trên một mảng trống.

Ví dụ :

[].all? { |s| s.size == 1 }
# true

Giải thích :

Vì KHÔNG có phần tử nào là false thì tất cả các phần tử phải là true .

Đó là logic đằng sau điều này.

Ruby None Method

Nếu bạn muốn đảo ngược all? , sử dụng none?

Đây là một ví dụ :

strings.none? { |str| str.size == 5 }

Điều này trả về true nếu không có chuỗi nào phù hợp với điều kiện hoặc false nếu một hoặc nhiều đối sánh với nó.

Nó giống như trừ khi câu lệnh if.

Ruby Any Method

Bạn có muốn biết liệu BẤT KỲ phần tử nào phù hợp với điều kiện của bạn không?

Bạn có thể sử dụng any? phương pháp!

Như thế này :

[1,2,3,4,5].any?
# true

Trong ví dụ cụ thể này, any? hoạt động giống như nghịch đảo của empty? . Nhưng điều đó sẽ không hiệu quả với mọi tình huống.

Vì đây là câu hỏi đặt ra :

“Có bất kỳ phần tử THẬT nào bên trong mảng này không?”

Nếu mảng của bạn chỉ bao gồm không trung thực (nil / false ) các giá trị bạn sẽ nhận được false , nhưng mảng không thực sự trống.

Ví dụ :

[nil].any?
# false

Bạn cũng có thể chuyển một khối cho phương thức này:

[1,2,3].any? { |n| n > 0 }
# true

Điều này sẽ kiểm tra xem n > 0true cho ÍT NHẤT một phần tử.

Phương pháp Ruby One

Bạn có thể kiểm tra xem CHÍNH XÁC một phần tử trả về true hay không với one? phương pháp.

Đây là một ví dụ :

["a", 1, {}].one? { |obj| obj.kind_of?(Hash) }
# true

Bạn có thể sử dụng điều này mà không cần khối để kiểm tra xem mảng có chứa chính xác một giá trị trung thực hay không (bất kỳ giá trị nào ngoại trừ false / nil ).

["a"].one?
# true

[].one?
# false

[nil].one?
# false

Tôi sẽ gắn bó với size == 1 bởi vì nó rõ ràng hơn. Mọi người sẽ hiểu điều đó ngay cả khi họ không quen thuộc với one? phương pháp này không phổ biến.

Tính năng Ruby 2.5 mới

Kể từ Ruby 2.5, 4 phương thức này (any? / all? / none? / one? ) cũng có một đối số hoạt động giống như đối số của grep.

Đây là ý của tôi :

[:orange, :apple, :coconut].any?(Symbol)
# true

[1,2,3].all?(1..10)
# true

Đây là một phím tắt nhỏ hay nếu bạn muốn kiểm tra một lớp, biểu thức chính quy hoặc một phạm vi.

Tóm tắt

Bạn đã học về 4 phương pháp Ruby tuyệt vời có thể giúp bạn tiết kiệm rất nhiều công việc! Các phương thức này chỉ trả về true hoặc false .

Nếu bạn chưa sử dụng các phương pháp này trước đây… tại sao không thử ngay bây giờ?

Hãy chia sẻ bài viết này nếu bạn thấy nó hữu ích.