Если вы проверяете, может ли объект ответить на серию методов, вы можете сделать что-то вроде:
methods = [:valid?, :chase, :test]
def has_methods?(something, methods)
methods & something.methods == methods
end
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.