web-dev-qa-db-fra.com

Quelle est la différence entre les tableaux et les hachages?

Quelle est la différence entre les tableaux et les hachages en Ruby?

22
emurad

De Ruby-Doc:

Les tableaux sont des collections ordonnées d'index entiers de tout objet. L'indexation des tableaux commence à 0, comme en C ou en Java. Un index négatif est supposé être relatif à la fin du tableau. En d'autres termes, un index de -1 indique le dernier élément du tableau, -2 est l'avant-dernier élément du tableau, etc. Regardez ici pour plus.

Un hachage est une collection de paires clé-valeur. C'est similaire à un tableau, sauf que l'indexation est faite via des clés arbitraires de n'importe quel type d'objet, pas un index entier. Les hachages énumèrent leurs valeurs dans l'ordre dans lequel les clés correspondantes ont été insérées.

Les hachages ont une valeur par défaut qui est renvoyée lors de l'accès à des clés qui n'existent pas dans le hachage. Par défaut, cette valeur est nil. Regardez ici pour plus.

30
intellidiot

Tableaux: Les tableaux sont utilisés pour stocker des collections de données. Chaque objet d'un tableau a une clé unique qui lui est assignée. Nous pouvons accéder à n’importe quel objet du tableau en utilisant cette clé unique. Les positions dans un tableau commencent à "0". Le premier élément est situé à "0", le second en 1ère position etc.

Exemple: essayez ce qui suit in - irb.

bikes = Array.new
bikes = %w[Bajaj-Pulsar, Honda-Unicorn, TVS-Apache, Yamaha, Suzuki]

Vous avez ajouté 4 éléments dans le tableau.

puts bikes[3]
Yamaha,

Ajouter un nouvel élément à la position 5.

bikes[5] = "Hardly Davidson"

Hash: comme les tableaux, les Hash sont également utilisés pour stocker des données. Le hachage pointe un objet vers un autre objet. Pensez à attribuer un certain "sens" à une chaîne. Chaque fois que vous faites référence à cette chaîne, elle fait référence à sa "signification".

Exemple:

bikes = Hash.new
bikes = {
'Bajaj' => 'Pulsar 220, Pulsar 200, Pulsar 180 and Pulsar 150',
'Honda' => 'Unicorn, Shine and Splendor',
'TVS' => 'Apache, Star City, and Victor'
}

Essayez ceci maintenant:

bikes['Bajaj']

Vous obtenez => "Pulsar 220, Pulsar 200, Pulsar 180 et Pulsar 150"

10
Unknown Developer

Un tableau est une liste ordonnée de choses: a, b, c, d

Un hash est une collection de paires clé/valeur: john a un peugeot, bob a un renault, adam a un gué.

8
Quentin

Les deux termes sont "hachés" ensemble ces jours-ci. Je pense voici comment ça se passe:

Un "hash" aura des paires clé -> valeur:

(top -> tshirt, bottom -> shorts, feet -> shoes)

Et un "tableau" aura typiquement un index:

([0]tshirt, [1]shorts, [2]shoes)

Mais, à tort ou à raison, vous verrez aussi des choses avec des paires clé -> valeur appelées "tableaux".

Je pense que la différence dépend principalement du moment et de la manière dont vous voulez les utiliser. Vous n'aurez pas beaucoup de mal à appeler un tableau un hachage, ou inversement, mais vous devriez connaître la différence.

0
James