2010-12-16 155 views
2

Dire que j'ai un tableau de tableaux en Ruby,données d'essai dans des tableaux Ruby

array = [["bob", 12000, "broke", "ugly"], 
     ["kelly", 50000, "rich", "attractive"]] 

Chaque sous-tableau est juste un enregistrement. Quel est syntaxiquement la construction la plus élégante pour tester certains éléments de chaque sous-tableau pour certaines conditions, telles que

  • L'élément zeroth dans chaque tableau est-il une chaîne?
  • Le deuxième élément de chaque tableau est-il un entier?

Merci!

Répondre

1

Puisque vous avez mentionné tous les éléments, la façon idiomatiques est d'utiliser all? dénombrable. Comme ceci:

array = [["bob", 12000, "broke", "ugly"], 
     ["kelly", 50000, "rich", "attractive"]] 

array.all? { |element| 
    # check whatever you would like to check 
    # check if zeroth element is String or not 
    element.first.is_a?(String) # this would mean that you are assuming element is a collection, since first generally works on a collection 
} 

Enumerable est un bon point de départ.

+0

Votre exemple ne couvre pas les deux premiers éléments ... –

+0

Vous dites 'any?' Dans la première phrase, mais l'exemple de code utilise 'all?'. – Theo

1

Essayez d'utiliser all?:

all_match = array.all? {|inner_array| 
    inner_array[0].kind_of?(String) && inner_array[1].kind_of?(Fixnum) 
} 
+0

Je ne souhaite pas supprimer d'éléments. Je veux juste vérifier l'intégrité du tableau avant de faire des choses avec. – mbm

+0

@mbm Oups, mis à jour. –