Si está verificando si un objeto puede responder a una serie de métodos, podría hacer algo como:
methods = [:valid?, :chase, :test]
def has_methods?(something, methods)
methods & something.methods == methods
end
Se methods & something.methods
unirán las dos matrices en sus elementos comunes / coincidentes. something.methods incluye todos los métodos que está buscando, será igual a los métodos. Por ejemplo:
[1,2] & [1,2,3,4,5]
==> [1,2]
entonces
[1,2] & [1,2,3,4,5] == [1,2]
==> true
En esta situación, querrá usar símbolos, porque cuando llama a .methods, devuelve una matriz de símbolos y, si lo usa ["my", "methods"]
, devolvería false.