2010-07-06 8 views

Respuesta

9

Si desea hacer coincidir las clases exactas (y no descendientes), puede utilizar:

[Hash, Array].member? a.class 

creo que usted debe explicar qué es exactamente lo que necesita para alcanzar. Quizás lo único que necesite verificar es si su objeto es Enumerable o no, o incluso si es respond_to? algún método en particular.

+0

+1 Me gustaría +2 si pudiera obtener consejos adicionales sobre el pato. – rampion

+0

Esto comprueba que 'a.class == Hash' o' Array', pero fallará para las subclases de ellos ... +1 para 'is_a? (Enumerable)' en su lugar ... –

5

Usted está buscando Array#any?

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

#each por lo general sólo devuelve el enumerable. #any? ors juntos el resultado de los bloques.

Cuestiones relacionadas