Nếu bạn đang kiểm tra xem liệu một đối tượng có thể phản hồi với một loạt các phương thức hay không, bạn có thể làm một cái gì đó như:
methods = [:valid?, :chase, :test]
def has_methods?(something, methods)
methods & something.methods == methods
end
những methods & something.methods
sẽ tham gia vào hai mảng trên các yếu tố chung / phù hợp với họ. Something.methods bao gồm tất cả các phương thức bạn đang kiểm tra, nó sẽ là các phương thức bằng nhau. Ví dụ:
[1,2] & [1,2,3,4,5]
==> [1,2]
vì thế
[1,2] & [1,2,3,4,5] == [1,2]
==> true
Trong tình huống này, bạn muốn sử dụng các ký hiệu, bởi vì khi bạn gọi .method, nó sẽ trả về một mảng các ký hiệu và nếu bạn sử dụng ["my", "methods"]
, nó sẽ trả về sai.