2010-07-06 15 views

cevap

9

, şunları kullanabilirsiniz:

[Hash, Array].member? a.class 

Ben size ulaşmak için gereken tam olarak ne anlatmak gerektiğini düşünüyorum. Belki de kontrol etmeniz gereken tek şey, eğer nesneniz bir Enumerable ise, ya da respond_to? belirli bir yöntem olsa bile.

+0

+1 Ekstra ördek tüyleri tavsiye edebilecek olursam +2 olurdum. – rampion

+0

Bu, "a.class == Hash" veya "Array" öğelerini kontrol eder, ancak bunların alt sınıfları için başarısız olur ... +1 'is_a? (Enumerable)' yerine ... –

5

Sen Array#any?

actor.inspect if [Array, Hash].any? { |c| actor.is_a? c } 

#each aradığınız genellikle sadece enumerable döndürür. #any? veya birlikte blokların sonucu. Eğer kesin sınıfları (ve torunları) eşleşmesi istiyorsanız

İlgili konular