Tableau Ruby (Tableau)


Un tableau Ruby est une collection ordonnée et indexée sur des nombres entiers de n'importe quel objet. Chaque élément du tableau est associé à un index et peut être récupéré via l'index.

Les index des tableaux commencent à 0, tout comme en C ou Java. Un index négatif compte par rapport à la fin du tableau, c'est-à-dire qu'un index de -1 représente le dernier élément du tableau, -2 représente l'avant-dernier élément du tableau, et ainsi de suite.

Les tableaux Ruby peuvent stocker des objets tels que String, Integer, Fixnum, Hash, Symbol et même d'autres objets Array.

Les tableaux Ruby ne nécessitent pas de taille spécifiée, les tableaux Ruby se développent automatiquement lorsque des éléments sont ajoutés au tableau.

Création de tableaux

Il existe de nombreuses façons de créer ou d'initialiser des tableaux. Une solution consiste à utiliser la méthode de classe new :

names = Array.new

Vous pouvez définir la taille du tableau lors de sa création :

names = Array.new(20)

arraynames Taille ou la longueur est de 20 éléments. Vous pouvez utiliser la méthode size ou length pour renvoyer la taille du tableau :

#!/usr/bin/ruby

names = Array.new(20)
puts names.size  # 返回 20
puts names.length # 返回 20


Le résultat de sortie de l'exemple ci-dessus est :

20
20

Vous pouvez attribuez à chaque élément du tableau l'affectation d'élément, comme indiqué ci-dessous :

#!/usr/bin/ruby

names = Array.new(4, "mac")

puts "#{names}"


Le résultat de sortie de l'exemple ci-dessus est :

["mac", "mac", "mac", "mac"]

Vous pouvez également utiliser un bloc avec nouveau, chaque élément Utilisez les résultats du calcul dans le bloc pour remplir :

#!/usr/bin/ruby

nums = Array.new(10) { |e| e = e * 2 }

puts "#{nums}"


Le résultat de l'exemple ci-dessus est :

[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

Il y en a un autre méthode pour les tableaux, [], comme indiqué ci-dessous :

nums = Array.[](1, 2, 3, 4,5)

Une autre forme de création de tableau est la suivante :

nums = Array[1, 2, 3, 4,5]

Dans le module principal Ruby, vous pouvez avoir une méthode Array qui n'accepte qu'un seul paramètre , qui utilise une plage Créez un tableau de nombres comme paramètre :

#!/usr/bin/ruby

digits = Array(0..9)

puts "#{digits}"

Le résultat de l'exemple ci-dessus est :

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Méthode intégrée Array

Nous avons besoin d'un instance de l’objet Array pour appeler la méthode Array. Voici comment créer une instance d'un objet Array :

Array.[](...) [or] Array[...] [or] [...]

Cela renverra un nouveau tableau rempli avec l'objet donné. Maintenant, en utilisant l'objet créé, nous pouvons appeler n'importe laquelle des méthodes disponibles. Par exemple :

#!/usr/bin/ruby

digits = Array(0..9)

num = digits.at(6)

puts "#{num}"

Le résultat de sortie de l'exemple ci-dessus est :

6

Voici les méthodes de tableau publiques (en supposant que array est un objet Array) :

1819202122232446474849505165array.to_a66array.to_ary67array.to_s
Numéro de sérieMéthode et description
1tableau et autre_array
Renvoie un nouveau tableau contenant les éléments communs aux deux tableaux sans duplication.
2array * int [ou] array * str
Renvoie un nouveau tableau, le nouveau tableau est connecté par l'int de soi Copie créée. Avec le paramètre String, équivalent à self.join(str).
3array + other_array
renvoie un nouveau tableau créé en concaténant deux tableaux pour produire un troisième tableau de.
4array - other_array
Renvoie un nouveau tableau qui est supprimé du tableau initial dans other_array Une copie de l'élément qui apparaît.
5str <=> other_str
Comparez str avec other_str et retournez -1 (inférieur à), 0 ( égal à) ou 1 (supérieur à). Les comparaisons sont sensibles à la casse.
6array | other_array
En ajoutant other_array au tableau, supprimez les doublons et renvoyez un nouveau tableau.
7array << obj
Ajoute l'objet donné à la fin du tableau. L'expression renvoie le tableau lui-même, donc plusieurs ajouts peuvent être enchaînés.
8array <=> other_array
Renvoie un entier si le tableau est inférieur, égal ou supérieur que other_array (- 1, 0 ou +1).
9array == other_array
Si deux tableaux contiennent le même nombre d'éléments et que chaque élément est le même que le other Si les éléments correspondants dans les tableaux sont égaux (selon Object.==), alors les deux tableaux sont égaux.
10tableau[index] [ou] tableau[début, longueur] [ou]
tableau[plage] [ou] tableau. slice(index) [or]
array.slice(start, length) [or] array.slice(range)

Renvoie l'élément avec l'index index, ou renvoie l'élément from start démarre un sous-tableau jusqu'à length éléments, ou renvoie un sous-tableau spécifié par range. Les index négatifs comptent à partir de la fin du tableau (-1 est le dernier élément). Si index (ou index de départ) est hors plage, renvoyez nil.
11array[index] = obj [ou]
array[start, length] = obj ou an_array ou nil [ou]
array[range] = obj ou an_array ou nil

Définit l'élément avec l'index index, ou remplace le sous-tableau à partir de start jusqu'à length éléments, ou remplace le sous-tableau spécifié par range tableau. Si l'index est supérieur à la capacité actuelle de la baie, la baie grandira automatiquement. Les index négatifs comptent à partir de la fin du tableau. Insérez un élément si length est zéro. Si nil est utilisé sous la deuxième ou la troisième forme, l'élément est supprimé de self.
12array.abbrev(pattern = nil)
est calculé explicitement pour la chaîne dans self une collection d'abréviations. Si vous transmettez un modèle ou une chaîne, seuls les cas où la chaîne correspond au modèle ou commence par cette chaîne sont pris en compte.
13array.assoc(obj)
Recherchez un tableau dont les éléments sont également des tableaux. Utilisez obj.== pour. replace obj Compare le premier élément de chaque tableau contenu. Renvoie le premier tableau contenu si une correspondance est trouvée, ou nil si aucune correspondance n'est trouvée.
14array.at(index)
Renvoie l'élément avec index index. Un indice négatif compte à partir de la fin de soi. Renvoie zéro si l'index est hors plage.
15array.clear
Supprime tous les éléments du tableau.
16array.collect { |item| bloc } [ou]
array.map { |item| bloc }

Appelez block une fois pour chaque élément de self. Créez un nouveau tableau contenant les valeurs renvoyées par bloc.
17array.collect ! { |item| bloc } [ou]
array.map ! { |item| >
Appelle
block une fois pour chaque élément de self, en remplaçant l'élément par la valeur renvoyée par block.
array.compact renvoie une copie de
self avec tout supprimé nul élément.
array.compact!Supprime tous les éléments
nil du tableau. S'il n'y a aucun changement, renvoyez nil.
array.concat(other_array)Ajouter les éléments de other_array à
self.
array.delete(obj) [ou] array.delete(obj) { block }
De Supprimez les éléments égaux à
obj de self. Si aucune égalité n'est trouvée, nil est renvoyé. Si aucune égalité n'est trouvée et que le code optionnel block est donné, le résultat de block est renvoyé.
array.delete_at(index)Supprimer l'élément à l'
index spécifié et renvoyer le élément. Si l'index est hors plage, nil est renvoyé.
array.delete_if { |item| block }Lorsque
block est vrai, supprimez chaque élément du soi.
array.each { |item| bloc }Appelle block une fois pour chaque élément de self, en passant cet élément comme argument.
25array.each_index { |index| block }
Identique à Array#each, mais passe le de l'élément index au lieu de passer l'élément lui-même.
26array.empty?
Renvoie vrai si le tableau lui-même ne contient aucun élément.
27array.eql?(other)
if array et autre est le même objet, ou les deux tableaux ont le même contenu, alors true est renvoyé.
28array.fetch(index) [ou]
array.fetch(index, default) [ou]
array. fetch(index) { |index| block }

Essayez de renvoyer l'élément à la position index. Si index est en dehors du tableau, le premier formulaire lèvera une exception IndexError, le deuxième formulaire renverra default et le troisième formulaire renverra l'appel . 🎜>block transmet la valeur de index. index négatif compte à partir de la fin du tableau.
29array.fill(obj) [ou]
array.fill(obj, start [, length]) [ou]
array.fill(obj, range) [ou]
array.fill { |index| block } [ou]
array.fill(start [, length] ) { |index| block } [ou]
array.fill(range) { |index| block }

Les trois formulaires précédents définissent l'élément sélectionné de self sur obj. Commencer par nil équivaut à zéro. La longueur de nil équivaut à self.length. Les trois dernières formes remplissent le tableau avec la valeur du bloc . block est passé avec l'index absolu de chaque élément rempli.
30array.first [ou]
array.first(n)

Renvoie le premier élément du tableau Ou les premiers n éléments. Si le tableau est vide, le premier formulaire renvoie nil et le deuxième formulaire renvoie un tableau vide.
31array.flatten
Renvoie un nouveau tableau, qui est un tableau aplati unidimensionnel (de manière récursive).
32array.flatten!
Aplatir array. S'il n'y a aucun changement, renvoyez nil. (Les tableaux ne contiennent aucun sous-tableau.)
33array.frozen?
si tableau est gelé ( ou temporairement gelé lors du tri), il renvoie vrai.
34array.hash
Calcule le code de hachage d'un tableau. Deux tableaux avec le même contenu auront le même code de hachage.
35array.include?(obj)
Si self contient obj, il renvoie vrai, sinon il renvoie faux.
36array.index(obj)
Renvoie le premier objet de self qui est égal à obj L'index. Renvoie nil si aucune correspondance n'est trouvée.
37array.indexes(i1, i2, ... iN) [ou]
array.indices(i1, i2, . ..iN)

Cette méthode est obsolète dans les versions récentes de Ruby, utilisez donc plutôt Array#values_at.
38array.indices(i1, i2, ... iN) [ou]
array.indexes(i1, i2, . .. iN)

Cette méthode est obsolète dans les versions récentes de Ruby, utilisez donc plutôt Array#values_at.
39array.insert(index, obj...)
à l'index donné la valeur donnée avant l'élément, l'index peut être une valeur négative.
40array.inspect
Crée une version imprimable d'un tableau.
41array.join(sep=$,)
Renvoie une chaîne en convertissant chaque élément du tableau en chaîne et est créé à l'aide des délimiteurs sep.
42array.last [ou] array.last(n)
renvoie le dernier de self un élément. La première forme renvoie nil si le tableau est null.
43array.length
Renvoie le nombre d'éléments dans self. Peut-être zéro.
44array.map { |item| bloc } [ou]
array.collect { |item| bloc }

Appelez block une fois pour chaque élément de soi. Créez un nouveau tableau contenant les valeurs renvoyées par bloc.
45array.map ! { |item| bloc } [ou]
array.collect { |item| >
Appelez
block une fois pour chaque élément du array, en remplaçant l'élément par la valeur renvoyée par block.
array.nitemsRenvoie le nombre d'éléments non nuls dans
self. Peut-être zéro.
array.pack(aTemplateString)Selon les instructions de aTemplateString, compressez le contenu du tableau en binaire séquence. Les instructions A, a et Z peuvent être suivies d'un nombre indiquant la largeur du champ de résultat. Les instructions restantes peuvent également avoir un nombre indiquant le nombre d'éléments du tableau à convertir. Si le nombre est un astérisque (*), tous les éléments restants du tableau seront convertis. Toute directive peut être suivie d'un trait de soulignement (_), indiquant que le type spécifié utilise la taille native de la plateforme sous-jacente, sinon une taille cohérente indépendante de la plateforme est utilisée. Les espaces blancs sont ignorés dans les chaînes de modèle.
array.popSupprime le dernier élément de
array et renvoie cet élément. Renvoie nil si tableau est vide.
array.push(obj, ...)Ajoute l'obj donné à la fin du tableau. L'expression renvoie le tableau lui-même, donc plusieurs ajouts peuvent être enchaînés.
array.rassoc(key)Recherchez un tableau dont les éléments sont également des tableaux, utilisez == pour mettre
key est comparé au deuxième élément de chaque tableau contenu. S'il y a une correspondance, le premier tableau contenant est renvoyé.
array.reject { |item| bloc }Renvoie un nouveau tableau contenant les éléments du tableau lorsque block n'est pas vrai.
52array.reject! { |item| block }
Lorsque le bloc est vrai, de array Supprimez l'élément, retournez nil s'il n'y a pas de changement. Équivalent à Array#delete_if.
53array.replace(other_array)
Remplacer le contenu de array par other_array Le contenu de sera tronqué ou élargi si nécessaire.
54array.reverse
Renvoie un nouveau tableau contenant les éléments du tableau dans l'ordre inverse.
55array.reverse!
Inverser array.
56array.reverse_each {|item| block }
La même chose que Array#each, mais utilisez array Effectuer une inversion.
57array.rindex(obj)
Renvoie l'index du dernier objet du tableau égal à obj. Si aucune correspondance n'est trouvée, nil est renvoyé.
58array.select {|item| block }
Appelle le bloc qui passe les éléments consécutifs du tableau et renvoie un tableau, contient des éléments lorsque le bloc renvoie la valeur true.
59array.shift
Renvoie le premier élément de self et supprime cet élément (Déplacer tout autres éléments vers le bas d'une position). Si le tableau est vide, renvoie nil.
60array.size
Renvoie la longueur (nombre d'éléments) de tableau. Alias ​​​​pour la longueur.
61array.slice(index) [ou] array.slice(start, length) [ou]
array.slice(range ) [ou] array[index] [or]
array[start, length] [or] array[range]

Renvoie l'élément avec l'index index, ou renvoie l'élément from start démarre un sous-tableau jusqu'à length éléments, ou renvoie un sous-tableau spécifié par range. Les index négatifs comptent à partir de la fin du tableau (-1 est le dernier élément). Si index (ou index de départ) est hors plage, renvoyez nil.
62array.slice!(index) [ou] array.slice!(début, longueur) [ou]
array.slice !(range)

Supprime les éléments spécifiés par index (la longueur est facultative) ou range. Renvoie l'objet supprimé, le sous-tableau ou nil si index est hors plage.
63array.sort [or] array.sort { | a,b | block }
Renvoie un tableau trié.
64array.sort ! [ou] array.sort ! { | Trier.
renvoie soi
. S'il est appelé sur une sous-classe de Array, l'argument reçu est converti en un objet Array.
Revenir soi-même.
Retournez self.join.
68array.transpose
Supposons que self soit un tableau de tableaux, avec des lignes et des colonnes transposées.
69array.uniq
Renvoie un nouveau tableau avec des doublons dans array valeur supprimée.
70array.uniq!
Supprimez les éléments en double de self. S'il n'y a aucun changement (c'est-à-dire qu'aucun doublon n'a été trouvé), nil est renvoyé.
71array.unshift(obj, ...)
Placer l'objet devant le tableau, sur d'autres éléments Déplacez-vous d’une position.
72array.values_at(selector,...)
Renvoie un tableau contenant self avec le sélecteur donné (un ou plusieurs) éléments correspondants. Le sélecteur peut être un index entier ou une plage.
73array.zip(arg, ...) [ou]
array.zip(arg, ...){ | arr | block }

Convertissez n'importe quel paramètre en tableau, puis fusionnez les éléments de tableau avec les éléments correspondants de chaque paramètre.

Directive Array pack

Le tableau suivant répertorie les directives de compression pour la méthode Array#pack.

指令描述
@移动到绝对位置。
AASCII 字符串(填充 space,count 是宽度)。
aASCII 字符串(填充 null,count 是宽度)。
B位字符串(降序)
b位字符串(升序)。
C无符号字符。
c字符。
D, d双精度浮点数,原生格式。
E双精度浮点数,little-endian 字节顺序。
e单精度浮点数,little-endian 字节顺序。
F, f单精度浮点数,原生格式。
G双精度浮点数,network(big-endian)字节顺序。
g单精度浮点数,network(big-endian)字节顺序。
H十六进制字符串(高位优先)。
h十六进制字符串(低位优先)。
I无符号整数。
i整数。
L无符号 long。
lLong。
M引用可打印的,MIME 编码。
mBase64 编码字符串。
NLong,network(big-endian)字节顺序。
nShort,network(big-endian)字节顺序。
P指向一个结构(固定长度的字符串)。
p指向一个空结束字符串。
Q, q64 位数字。
S无符号 short。
sShort。
UUTF-8。
uUU 编码字符串。
VLong,little-endian 字节顺序。
vShort,little-endian 字节顺序。
wBER 压缩的整数 fnm。
X向后跳过一个字节。
xNull 字节。
Z与 a 相同,除了 null 会被加上 *。

Exemples

Essayez les exemples suivants pour compresser diverses données.

a = [ "a", "b", "c" ]
n = [ 65, 66, 67 ]
puts a.pack("A3A3A3")   #=> "a  b  c  "
puts a.pack("a3a3a3")   #=> "a
a  b  c
abc
ABC
0rrreee0brrreee0rrreee0crrreee0rrreee0" puts n.pack("ccc")      #=> "ABC"

Le résultat de sortie de l'exemple ci-dessus est :

rrreee