Jeśli sprawdzasz, czy obiekt może odpowiedzieć na szereg metod, możesz zrobić coś takiego:
methods = [:valid?, :chase, :test]
def has_methods?(something, methods)
methods & something.methods == methods
end
methods & something.methods
dołączy do dwóch tablic na ich elementów wspólnych / dopasowanie. coś.metody obejmują wszystkie sprawdzane metody, będą równe metodom. Na przykład:
[1,2] & [1,2,3,4,5]
==> [1,2]
więc
[1,2] & [1,2,3,4,5] == [1,2]
==> true
W tej sytuacji chciałbyś użyć symboli, ponieważ gdy wywołasz .methods, zwróci tablicę symboli, a jeśli użyjesz ["my", "methods"]
, zwróci false.