Если вы проверяете, может ли объект отвечать на ряд методов, вы можете сделать что-то вроде:
methods = [:valid?, :chase, :test]
def has_methods?(something, methods)
methods & something.methods == methods
end
the methods & something.methods
присоединится к двум массивам их общих / совпадающих элементов. Что-то содержит методы, которые вы проверяете, это равнозначно методам. Например:
[1,2] & [1,2,3,4,5]
==> [1,2]
так
[1,2] & [1,2,3,4,5] == [1,2]
==> true
В этой ситуации вы захотите использовать символы, потому что когда вы вызываете .methods, он возвращает массив символов, и если вы использовали ["my", "methods"]
, он возвращает false.