Wenn Sie überprüfen, ob ein Objekt auf eine Reihe von Methoden reagieren kann, können Sie Folgendes tun:
methods = [:valid?, :chase, :test]
def has_methods?(something, methods)
methods & something.methods == methods
end
Sie methods & something.methods
verbinden die beiden Arrays mit ihren gemeinsamen / übereinstimmenden Elementen. Something.methods enthält alle Methoden, nach denen Sie suchen. Es entspricht den Methoden. Beispielsweise:
[1,2] & [1,2,3,4,5]
==> [1,2]
so
[1,2] & [1,2,3,4,5] == [1,2]
==> true
In dieser Situation möchten Sie Symbole verwenden, da beim Aufrufen von .methods ein Array von Symbolen zurückgegeben wird und wenn Sie diese verwendet haben ["my", "methods"]
false zurückgegeben wird.