Se stai verificando se un oggetto è in grado di rispondere a una serie di metodi, potresti fare qualcosa del tipo:
methods = [:valid?, :chase, :test]
def has_methods?(something, methods)
methods & something.methods == methods
end
la methods & something.methods
si uniranno due matrici sui loro elementi comuni / corrispondenza. something.methods include tutti i metodi che stai cercando, sarà uguale ai metodi. Per esempio:
[1,2] & [1,2,3,4,5]
==> [1,2]
così
[1,2] & [1,2,3,4,5] == [1,2]
==> true
In questa situazione, vorresti usare i simboli, perché quando chiami .methods, restituisce un array di simboli e se lo usi ["my", "methods"]
, restituisce false.