English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Les tableaux Ruby sont des ensembles d'indices entiers ordonnés de n'importe quel objet. Chaque élément du tableau est associé à un index et peut être récupéré via cet index.
Les indices des tableaux commencent à 0, comme en C ou en Java. Un index négatif se réfère à la fin du tableau, c'est-à-dire, l'index de -1 représente l'élément dernier d'un tableau,-2 représente l'élément deuxièmement dernier du tableau, et ainsi de suite.
Les tableaux Ruby peuvent stocker des objets tels que String, Integer, Fixnum, Hash, Symbol, etc., et peuvent même être d'autres objets Array.
Les tableaux Ruby n'ont pas besoin de spécifier la taille, ils grandissent automatiquement lorsque des éléments sont ajoutés.
Il y a plusieurs façons de créer ou d'initialiser un tableau. Une des façons est par new Méthode de classe :
names = Array.new
Vous pouvez définir la taille du tableau lors de sa création :
names = Array.new(20)
Tableau names La taille ou la longueur est 20 élément. Vous pouvez utiliser la méthode size ou length pour obtenir la taille du tableau :
#!/usr/bin/ruby names = Array.new(20) puts names.size # Retourne 20 puts names.length # Retourne 20
Les résultats de l'exemple ci-dessus sont les suivants :
20 20
Vous pouvez assigner une valeur à chaque élément du tableau, comme indiqué ci-dessous :
#!/usr/bin/ruby names = Array.new(4, "mac") puts "#{names}"
Les résultats de l'exemple ci-dessus sont les suivants :
["mac", "mac", "mac", "mac"]
Vous pouvez également utiliser un bloc avec new, chaque élément étant rempli du résultat du bloc :
#!/usr/bin/ruby nums = Array.new(10) { |e| e = e * 2 } puts "#{nums}"
Les résultats de l'exemple ci-dessus sont les suivants :
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
Un autre moyen de créer un tableau, [], est indiqué ci-dessous :
nums = Array.[](1, 2, 3, 4,5)
Une autre forme de création de tableau est indiquée ci-dessous :
nums = Array[1, 2, 3, 4,5]
Dans le module Ruby core, il peut y avoir une méthode Array qui reçoit un seul paramètre et qui crée un tableau de nombres en utilisant une plage comme paramètre :
#!/usr/bin/ruby digits = Array(0..9) puts "#{digits}"
Les résultats de l'exemple ci-dessus sont les suivants :
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Nous devons avoir un exemple d'objet Array pour appeler les méthodes Array. Voici comment créer un objet Array :
Array.[](...) [ou] Array[...] [ou] [...]
Cela retournera un nouveau tableau rempli de l'objet donné. Maintenant, en utilisant l'objet créé, nous pouvons appeler n'importe quelle méthode disponible. Par exemple :
#!/usr/bin/ruby digits = Array(0..9) num = digits.at(6) puts "#{num}"
Les résultats de l'exemple ci-dessus sont les suivants :
6
Voici les méthodes communes des tableaux (hypothèse) array C'est un objet Array (Array Object) :
Numéro de séquence | Méthode & Description |
---|---|
1 | array & other_array Retourne un nouveau tableau contenant les éléments communs aux deux tableaux sans répétition. |
2 | array * int [or] array * str 返回一个新的数组,新数组通过连接 self 的 int 副本创建的。带有 String 参数时,相当于 self.join(str)。 |
3 | array + other_array 返回一个新的数组,新数组通过连接两个数组产生第三个数组创建的。 |
4 | array - other_array 返回一个新的数组,新数组是从初始数组中移除了在 other_array 中出现的项的副本。 |
5 | str <=> other_str 把 str 与 other_str 进行比较,返回 -1(小于)、0(等于)或 1(大于)。比较是区分大小写的。 |
6 | array | other_array 通过把 other_array 加入 array 中,移除重复项,返回一个新的数组。 |
7 | array << obj 把给定的对象附加到数组的末尾。该表达式返回数组本身,所以几个附加可以连在一起。 |
8 | array <=> other_array 如果数组小于、等于或大于 other_array,则返回一个整数(-1、 0 或 +1)。 |
9 | array == other_array 如果两个数组包含相同的元素个数,且每个元素与另一个数组中相对应的元素相等(根据 Object.==),那么这两个数组相等。 |
10 | array[index] [or] array[start, length] [or] array[range] [or] array.slice(index) [or] array.slice(start, length) [or] array.slice(range) Retourne l'index de index des éléments, ou retourne à partir de début de début jusqu'à length un sous-array de n éléments, ou retourne range le sous-array spécifié. Un index négatif commence à compter de la fin de l'array (-1 est le dernier élément). Si index(ou l'index de départ)Hors de portée, retourne nil。 |
11 | array[index] = obj [or] array[start, length] = obj or an_array or nil [or] array[range] = obj or an_array or nil 设置索引为 index 的元素,或者替换从 début de début jusqu'à length 个元素的子数组,或者替换 range 指定的子数组。如果索引大于数组的当前容量,那么数组会自动增长。负值索引从数组末尾开始计数。如果 length 为零则插入元素。如果在第二种或第三种形式中使用了 nil,则从 self 删除元素。 |
12 | array.abbrev(pattern = nil) array.collect! { |item| block } self 中的字符串计算明确的缩写集合。如果传递一个模式或一个字符串,只考虑当字符串匹配模式或者以该字符串开始时的情况。 |
13 | array.assoc(obj) cherche un tableau, whose éléments sont aussi des tableaux, en comparant obj.== avec chaque premier élément des tableaux contenus. Si une correspondance est trouvée, retourne le premier tableau contenant, si non trouvé, retourne nil。 |
14 | array.at(index) retourne l'élément à l'index spécifié. Un index négatif commence self compte à partir de la fin du tableau. Si l'index dépasse la gamme, retourne nil. |
15 | array.clear supprime tous les éléments du tableau. |
16 | array.collect { |item| block } [or] array.map { |item| block } array.collect! { |item| block } self appelle une fois chaque élément appelle chaque élémentarray.collect { |item| block } |
17 | array.collect! { |item| block } [or] array.map! { |item| block } array.collect! { |item| block } self appelle une fois chaque élément appelle chaque élémentet remplace l'élément par appelle chaque élément valeurs retournées. |
18 | array.compact retourne self la copie du tableau, supprime tous les nil les éléments. |
19 | array.compact! supprime tous les éléments nil les éléments. nil。 |
20 | array.concat(other_array) ajoute les éléments de other_array à self . |
21 | l'élément array.delete(obj) [or] de self array.delete(obj) { block } obj l'élément équivalent nilsi l'élément équivalent n'est pas trouvé et que le code optionnel appelle chaque élémentsi appelle chaque élément le résultat. |
22 | array.delete_at(index) supprime l'élément spécifié index l'élément à la position spécifiée, et retourne cet élément. Si l'index dépasse la gamme, retourne nil。 |
23 | array.delete_if { |item| block } quand appelle chaque élément supprime l'élément lorsque self de chaque élément. |
24 | array.each { |item| block } array.collect! { |item| block } self appelle une fois chaque élément appelle chaque élémentet transmet cet élément en tant que paramètre. |
25 | array.each_index { |index| block } comme Array#each, mais transmet l'élément indexplutôt que de transmettre l'élément lui-même. |
26 | array.empty? si le tableau lui-même ne contient pas d'éléments, retourne true. |
27 | array.eql?(other) Si array et other sont les mêmes objets, ou deux tableaux contiennent du contenu identique, alors retourne true. |
28 | array.fetch(index) [or] array.fetch(index, default) [or] array.fetch(index) { |index| block } Essayer de retourner la position index de l'élément à index Situé à l'extérieur de l'array, la première forme lèvera IndexError Exception, la deuxième forme retourne defaultLa troisième forme retourne l'appel appelle chaque élément Transmis index La valeur. index Commencer à compter à partir de la fin de l'array. |
29 | array.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 premières formes définissent self des éléments sélectionnés comme obj. Avec nil Le début équivaut à zéro.nil La longueur équivaut à self.length. Les trois dernières formes utilisent la valeur du block.Remplirarray.appelle chaque élément Passer par l'index absolu de chaque élément rempli. |
30 | array.first [ou] array.first(n) Retourne le premier élément de l'array ou les n d'éléments. Si l'array est vide, la première forme retourne nil, la deuxième forme retourne un tableau vide. |
31 | array.flatten Retourne un nouveau tableau, un tableau à un seul dimension et plat (par récursion). |
32 | array.flatten! Inverser array Flattener. Si il n'y a pas de changement, retourne nil. (L'array ne contient pas de sous-array.) |
33 | array.frozen? Si array Si l'array est gelé (ou temporairement gelé lors de l'ordonnancement), retourne true. |
34 | array.hash Calculer le code hash de l'array. Deux tableaux avec le même contenu auront le même code hash. |
35 | array.include?(obj) Si self contient objRetourne true si obj est inclus, sinon retourne false. |
36 | array.index(obj) retourne self le premier objet égal à obj index. Si le correspondant n'est pas trouvé, retourne nil。 |
37 | array.indexes(i1, i2, ... iN) [ou] array.indices(i1, i2, ... iN) Cette méthode a été obsolète dans la dernière version de Ruby, donc utilisez Array#values_at. |
38 | array.indices(i1, i2, ... iN) [ou] array.indexes(i1, i2, ... iN) Cette méthode a été obsolète dans la dernière version de Ruby, donc utilisez Array#values_at. |
39 | array.insert(index, obj...) Dans la zone donnée index Insérer la valeur donnée avant l'élément donné, l'index peut être négatif. |
40 | array.inspect Crée une version imprimable du tableau. |
41 | array.join(sep=$,) Retourne une chaîne de caractères en convertissant chaque élément du tableau en une chaîne de caractères, en utilisant sep séparés pour créer. |
42 | array.last [ou] array.last(n) retourne self Le dernier élément devideretourne nil。 |
43 | Si retourne self array.length |
44 | Le nombre d'éléments du tableau. Cela peut être nul. array.map { |item| block } [ou] array.collect! { |item| block } self de appelle chaque élémentarray.collect { |item| block } |
45 | Crée un nouveau tableau contenant les valeurs retournées par block. array.map! { |item| block } [ou] array.collect! { |item| block } array de appelle chaque élémentet remplace l'élément par la valeur retournée par block. block |
46 | array.nitems retourne self de non-Le nombre d'éléments nil. Cela peut être nul. |
47 | array.pack(aTemplateString) Selon les instructions de aTemplateString, comprime le contenu du tableau en une séquence binaire. Les instructions A, a et Z peuvent être suivies d'un nombre indiquant la largeur du champ de résultat. Les autres instructions peuvent également avoir un nombre indiquant le nombre d'éléments à convertir. Si le nombre est une étoile (*),tous les éléments restants du tableau seront convertis. Un trait de soulignement (_) peut suivre n'importe quelle instruction, ce qui indique que le type spécifié utilise la taille locale du platforme de bas niveau, sinon il utilise une taille cohérente indépendante du platforme. Les espaces dans les chaînes de caractères de modèle sont ignorés. |
48 | array.pop de array Supprime le dernier élément du milieu, et retourne cet élément. Si array Retourne sans rien si vide nil。 |
49 | array.push(obj, ...) Ajoute l'obj fourni à la fin du tableau. Cette expression retourne le tableau lui-même, donc plusieurs ajouts peuvent être faits en une seule fois. |
50 | array.rassoc(key) Recherche un tableau whose éléments sont aussi des tableaux, en utilisant == pour key Compare chaque deuxième élément des tableaux contenus. Si une correspondance est trouvée, retourne le premier tableau contenant. |
51 | array.reject { |item| block } Retourne un nouveau tableau contenant les éléments du tableau pour lesquels block n'est pas vrai. |
52 | array.reject! { |item| block } Lorsque block est vrai, à partir de array Supprime un élément, et retourne sans changement si rien n'a été modifié. nilÉquivalent à Array#delete_if. |
53 | array.replace(other_array) Inverser array le contenu est remplacé par other_array le contenu, nécessairement tronqué ou étendu. |
54 | array.reverse Retourne un nouveau array contenant les éléments de l'array inversés. |
55 | array.reverse! Inverser array Inverser. |
56 | array.reverse_each {|item| block } Comme Array#each, mais avec array Inverser. |
57 | array.rindex(obj) Retourne l'index de l'objet égal à obj dans array. Si le correspondant n'est pas trouvé, retourne nil。 |
58 | array.select {|item| block } Appel le block transmis en continu de l'array, retourne un array contenant les valeurs retournées par le block. true lorsque l'élément a la valeur spécifiée. Retourne |
59 | array.shift retourne self le premier élément de l'array, et retire cet élément (tous les autres éléments descendent d'une place). Si l'array est vide, retourne nil。 |
60 | array.size retourne array la longueur (le nombre d'éléments). Alias de length. |
61 | array.slice(index) [ou] array.slice(début, longueur) [ou] array.slice(range) [ou] array[index] [ou] array[début, longueur] [ou] array[range] Retourne l'index de index des éléments, ou retourne à partir de début de début jusqu'à length un sous-array de n éléments, ou retourne range le sous-array spécifié. Un index négatif commence à compter de la fin de l'array (-1 est le dernier élément). Si index(ou l'index de départ)Hors de portée, retourne nil。 |
62 | array.slice!(index) [ou] array.slice!(début, longueur) [ou] array.slice!(range) supprimer index(la longueur est optionnelle)ou range l'élément spécifié. Retourne l'objet supprimé, le sous-array, si index Hors de portée, retourne nil。 |
63 | array.sort [ou] array.sort { | a,b | block } Retourne un array trié. |
64 | array.sort! [ou] array.sort! { | a,b | block } Trie l'array. |
65 | array.to_a retourne self。Si dans Array Appelé sur la sous-classe, le paramètre reçu est converti en objet Array. |
66 | array.to_ary retourne self. |
67 | array.to_s retourne self.join. |
68 | array.transpose hypothèse que self est un tableau de tableaux, et inverser les lignes et les colonnes. |
69 | array.uniq retourne un nouveau tableau, enlevant array des valeurs répétées dans |
70 | array.uniq! de self supprimer les éléments répétés. Si il n'y a pas de changement (c'est-à-dire, non trouvé répété), alors retourne nil。 |
71 | array.unshift(obj, ...) mettre l'objet en tête du tableau, et déplacer les autres éléments d'un rang. |
72 | array.values_at(selector,...) retourne un tableau contenant self avec les éléments correspondants aux selector(un ou plusieurs) éléments correspondants. Le sélecteur peut être un index ou une plage. |
73 | array.zip(arg, ...) [ou] array.zip(arg, ...){ | arr | block } convertir n'importe quel paramètre en tableau, puis array les éléments avec chaque élément correspondant de chaque paramètre fusionnés. |
Le tableau suivant liste les instructions de compression de la méthode Array#pack.
instruction | description |
---|---|
@ | se déplacer à une position absolue. |
A | chaîne ASCII (remplie de space, count est la largeur). |
a | chaîne ASCII (remplie de null, count est la largeur). |
B | chaîne de bits (décroissant) |
b | chaîne de bits (croissant). |
C | unsigned character. |
c | caractère. |
D, d | nombre flottant à virgule double, format natif. |
E | nombre flottant à virgule double, little-Ordre des octets endian |
e | nombre flottant à virgule simple, little-Ordre des octets endian |
F, f | nombre flottant à virgule simple, format natif. |
G | nombre flottant à virgule double, réseau(big-endian) ordre des octets. |
g | nombre flottant à virgule simple, réseau(big-endian) ordre des octets. |
H | chaîne hexadécimale (supérieur en priorité). |
h | chaîne hexadécimale (inférieur en priorité). |
I | unsigned integer. |
i | entier. |
L | unsigned long. |
l | Long. |
M | référence les caractères imprimables, codage MIME. |
m | Base64 编码e chaine. |
N | Long, réseau(big-endian) ordre des octets. |
n | Short, réseau(big-endian) ordre des octets. |
P | pointe vers une structure (chaîne de caractères de longueur fixe). |
p | pointe vers une chaîne de caractères terminée par un zéro. |
Q, q | 64 de numéros de bits. |
S | unsigned short. |
s | Courte. |
U | UTF-8。 |
u | Chaîne codée UU |
V | Long, little-Ordre des octets endian |
v | Short, little-Ordre des octets endian |
w | Entier compressé BER \fnm |
X | Passer un octet en arrière |
x | Octet null |
Z | Comme a, mais null sera ajouté *。 |
Essayez l'exemple suivant pour compresser divers types de données.
a = [ "a", "b", "c" ] n = [ 65, 66, 67 ] puts a.pack("A3A3A3") #=> "a b c " puts a.pack("a3a3a3") #=> "a\000\000b\000\000c\000\000" puts n.pack("ccc") #=> "ABC"
Les résultats de l'exemple ci-dessus sont les suivants :
a b c abc ABC