English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Ruby-Listen sind eine geordnete Sammlung von Objekten mit ganzzahligen Indizes. Jedes Element in der Liste ist mit einem Index verbunden und kann über diesen Index abgerufen werden.
Die Indizes der Liste beginnen bei 0, was in C oder Java ebenfalls der Fall ist. Ein negativer Index wird relativ zur Endseite der Liste gezählt, das heißt, der Index -1 Der letzte Element einer Liste zu kennzeichnen-2 表示数组中的倒数第二个元素,依此类推。
Ruby 数组可存储诸如 String、 Integer、 Fixnum、 Hash、 Symbol 等对象,甚至可以是其他 Array 对象。
Ruby 数组不需要指定大小,当向数组添加元素时,Ruby 数组会自动增长。
有多种方式创建或初始化数组。一种方式是通过 new 类方法:
names = Array.new
您可以在创建数组的同时设置数组的大小:
names = Array.new(20)
数组 names 的大小或长度为 20 个元素。您可以使用 size 或 length 方法返回数组的大小:
#!/usr/bin/ruby names = Array.new(20) puts names.size # 返回 20 puts names.length # 返回 20
DieAusgabeergebnissebeiderobenbeispielenaufgeführtsind:
20 20
您可以给数组中的每个元素赋值,如下所示:
#!/usr/bin/ruby names = Array.new(4, "mac") puts "#{names}"
DieAusgabeergebnissebeiderobenbeispielenaufgeführtsind:
["mac", "mac", "mac", "mac"]
您也可以使用带有 new 的块,每个元素使用块中的计算结果来填充:
#!/usr/bin/ruby nums = Array.new(10) { |e| e = e * 2 } puts "#{nums}"
DieAusgabeergebnissebeiderobenbeispielenaufgeführtsind:
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
数组还有另一种方法,[],如下所示:
nums = Array.[](1, 2, 3, 4,5)
数组创建的另一种形式如下所示:
nums = Array[1, 2, 3, 4,5]
在 Ruby 核心模块中可以有一个只接收单个参数的 Array 方法,该方法使用一个范围作为参数来创建一个数字数组:
#!/usr/bin/ruby digits = Array(0..9) puts "#{digits}"
DieAusgabeergebnissebeiderobenbeispielenaufgeführtsind:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
我们需要有一个 Array 对象的示例来调用 Array 方法。下面是创建 Array 对象示例的方式:
Array.[](...) [or] Array[...] [or] [...]
这将返回一个使用给定对象进行填充的新数组。现在,使用创建的对象,我们可以调用任意可用的方法。例如:
#!/usr/bin/ruby digits = Array(0..9) num = digits.at(6) puts "#{num}"
DieAusgabeergebnissebeiderobenbeispielenaufgeführtsind:
6
下面是公共的数组方法(假设 array 是一个 Array 对象):
序号 | 方法 & 描述 |
---|---|
1 | array & other_array 返回一个新的数组,包含两个数组中共同的元素,没有重复。 |
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) zurückgeben index bis start von length eine Elemente Unterkatalog, oder gibt zurück range bestimmten Unterkatalog. Negative Indizes zählen von der Ende des Arrays aus (-1 der letzte Element ist)。Wenn index(oder Startindex)ausreichend, dann wird 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 的元素,或者替换从 start von length 个元素的子数组,或者替换 range 指定的子数组。如果索引大于数组的当前容量,那么数组会自动增长。负值索引从数组末尾开始计数。如果 length 为零则插入元素。如果在第二种或第三种形式中使用了 nil,则从 self 删除元素。 |
12 | array.abbrev(pattern = nil) für self 中的字符串计算明确的缩写集合。如果传递一个模式或一个字符串,只考虑当字符串匹配模式或者以该字符串开始时的情况。 |
13 | array.assoc(obj) Search an array whose elements are also arrays, using obj.== to compare obj with the first element of each containing array. If a match is found, then return the first containing array, if no match is found, then return nil。 |
14 | array.at(index) Return the element at index index. A negative index starts from self Count from the end. If the index is out of range, then return nil. |
15 | array.clear Remove all elements from the array. |
16 | array.collect { |item| block } [or] array.map { |item| block } für self Call once for each element in blockErstellt ein neues Array, das die Werte enthält, die block zurückgibt. |
17 | array.collect! { |item| block } [or] array.map! { |item| block } für self Call once for each element in blockReplace the element with block is returned, removing all |
18 | array.compact zurückgegeben self A copy of nil elements. |
19 | array.compact! Remove all elements from nil elements. If there is no change, then return nil。 |
20 | array.concat(other_array) Append the elements of other_array to self in. |
21 | array.delete(obj) [or] array.delete(obj) { block } Von self is removed from obj item is returned. If no matching item is found, then return nil. If the optional code is not found and an optional code is given blockThen return block result. |
22 | array.delete_at(index) Delete the specified index the element at the specified position is deleted, and the element is returned. If the index is out of range, then return nil。 |
23 | array.delete_if { |item| block } When block Delete when self each element. |
24 | array.each { |item| block } für self Call once for each element in blockas an argument. |
25 | array.each_index { |index| block } Is the same as Array#each, but passes the element indexInstead of passing the element itself. |
26 | array.empty? If the array itself does not contain any elements, then return true. |
27 | array.eql?(other) Wenn array and other Are the same object, or two arrays contain the same content, then return true. |
28 | array.fetch(index) [or] array.fetch(index, default) [or] array.fetch(index) { |index| block } versucht, Position zurückzugeben index Elementen zurückgegeben. Wenn index außerhalb des Arrays liegt, wird Daher wird der erste Formular IndexError Ausnahme, der zweite Formular gibtdefault block Eingefügt index Werte. Negative Werte index Zählt vom Ende des Arrays aus. |
29 | array.fill(obj) [oder] array.fill(obj, start [, length]) [oder] array.fill(obj, range) [oder] array.fill { |index| block } [oder] array.fill(start [, length] ) { |index| block } [oder] array.fill(range) { |index| block } Die ersten drei Formeln setzen self der ausgewählten Elemente als objMit nil Startwert entspricht null.nil der Länge entspricht self.length。 Die letzten drei Formeln verwenden den Wert des BlocksFülltArray.block Durch den mit dem absoluten Index jedes gefüllten Elements übergeben. |
30 | array.first [oder] array.first(n) Gibt den ersten Element oder die ersten n Elementen. Wenn das Array leer ist, gibt der erste Formular nil,der zweite Formular gibt ein leeres Array zurück. |
31 | array.flatten Gibt ein neues Array zurück, das ein ein dimensionales, verglätlichtes Array ist (rekursiv). |
32 | array.flatten! umkehrt array Verglätcht. Wird nichts geändert, wird nil。(Das Array enthält keine Unterarrays。) |
33 | array.frozen? Wenn array gefroren (oder während des Sortierens vorübergehend gefroren), wird true zurückgegeben. |
34 | array.hash Berechnet den Hashcode des Arrays. Zwei Arrays mit demselben Inhalt haben denselben Hashcode. |
35 | array.include?(obj) Wenn self enthält obj, wird true zurückgegeben, sonst false. |
36 | array.index(obj) zurückgegeben self des ersten Objekts zurückgegeben, das obj entspricht index. Wird keine Übereinstimmung gefunden, wird nil。 |
37 | array.indexes(i1, i2, ... iN) [oder] array.indices(i1, i2, ... iN) Diese Methode wurde in der neuesten Version von Ruby abgekündigt, daher verwenden Sie Array#values_at. |
38 | array.indices(i1, i2, ... iN) [oder] array.indexes(i1, i2, ... iN) Diese Methode wurde in der neuesten Version von Ruby abgekündigt, daher verwenden Sie Array#values_at. |
39 | array.insert(index, obj...) Geben Sie index Insertiert den angegebenen Wert vor dem Element, index kann einen negativen Wert haben. |
40 | array.inspect Erstellt eine druckbare Version der Liste. |
41 | array.join(sep=$,) Gibt einen String zurück, indem die einzelnen Elemente der Liste in Strings umgewandelt werden und mit sep durch trennen erstellt wurde. |
42 | array.last [oder] array.last(n) zurückgegeben self das letzte Element. Wenn das Arrayleerwenn, dann gibt die erste Form nil。 |
43 | array.length zurückgegeben self der Elemente. Möglicherweise null. |
44 | array.map { |item| block } [oder] array.collect { |item| block } für self jedes Element einmal aufruft blockErstellt ein neues Array, das die Werte enthält, die block zurückgibt. |
45 | array.map! { |item| block } [oder] array.collect! { |item| block } für array jedes Element einmal aufruft blockund ersetzt die Elemente durch den Wert, der von block zurückgegeben wird. |
46 | array.nitems zurückgegeben self non-Anzahl der nil-Elemente. Möglicherweise null. |
47 | array.pack(aTemplateString) Nach den Anweisungen in aTemplateString komprimiert den Inhalt der Liste in eine binäre Sequenz. Die Anweisungen A, a und Z können eine Zahl hinter sich haben, die die Breite des Ergebnisfelds angibt. Die restlichen Anweisungen können ebenfalls eine Zahl haben, die die Anzahl der zu konvertierenden Arrayelemente angibt. Wenn die Zahl ein Stern (*) ist*),dann werden alle verbleibenden Arrayelemente in die umgewandelt. Jeder Anweisung kann ein Unterstrich (_) nachgestellt werden, um anzuzeigen, dass die Basisgröße der lokalen Plattform verwendet wird, anstatt eine einheitliche Größe unabhängig von der Plattform. |
48 | array.pop Von array Entfernt das letzte Element aus der Mitte und gibt dieses Element zurück. Wenn array Wird zurückgegeben, wenn leer nil。 |
49 | array.push(obj, ...) Fügt das gegebene obj an das Ende der Liste an. Diese Ausdrucksform gibt die Liste selbst zurück, sodass mehrere Anhänge hintereinander verbunden werden können. |
50 | array.rassoc(key) Durchsucht eine Liste, deren Elemente ebenfalls Listen sind, und verwendet ==, um key Vergleicht mit der zweiten Elemente jeder enthaltenen Liste. Gibt die erste Liste zurück, die einen Treffer ergibt. |
51 | array.reject { |item| block } Gibt ein neues Array zurück, das die Arrayelemente enthält, für die block nicht wahr ist. |
52 | array.reject! { |item| block } Wenn block wahr ist, von array Elemente löschen, und wenn sich nichts ändert, wird zurückgegeben nilÄquivalent zu Array#delete_if. |
53 | array.replace(other_array) umkehrt array Inhalte ersetzen durch other_array Inhalte, erforderlichenfalls kürzen oder erweitern. |
54 | array.reverse Gibt einen neuen Array zurück, der die umgekehrte Reihenfolge der Array-Elemente enthält. |
55 | array.reverse! umkehrt array umgekehrt. |
56 | array.reverse_each {|item| block } wie Array#each, aber array umgekehrt. |
57 | array.rindex(obj) Gibt den Index des letzten Objekts zurück, das gleich obj ist. Wenn keine Übereinstimmung gefunden wird, wird nil。 |
58 | array.select {|item| block } den Block, der kontinuierliche Elemente aus dem Array einliest, ruft zurück, gibt eine Array zurück, das Elemente enthält, die der Block zurückgibt true wertige Elemente. |
59 | array.shift zurückgegeben self das erste Element des Arrays, und entfernt dieses Element (verschiebt alle anderen Elemente um eine Position nach unten). Wenn das Array leer ist, wird nil。 |
60 | array.size zurückgegeben array Länge (Anzahl der Elemente). Alias für length. |
61 | array.slice(index) [oder] array.slice(start, length) [oder] array.slice(range) [oder] array[index] [oder] array[start, length] [oder] array[range] zurückgeben index bis start von length eine Elemente Unterkatalog, oder gibt zurück range bestimmten Unterkatalog. Negative Indizes zählen von der Ende des Arrays aus (-1 der letzte Element ist)。Wenn index(oder Startindex)ausreichend, dann wird nil。 |
62 | array.slice!(index) [oder] array.slice!(start, length) [oder] array.slice!(range) entfernen index(Länge ist optional)oder range bestimmten Elements. Gibt das gelöschte Objekt, den Unterkatalog zurück, wenn index ausreichend, dann wird nil。 |
63 | array.sort [oder] array.sort { | a,b | block } Einen sortierten Array zurückgeben. |
64 | array.sort! [oder] array.sort! { | a,b | block } den Array sortieren. |
65 | array.to_a zurückgegeben self。Wenn in Array Aufruf auf der Unterklasse, dann wird der empfangene Parameter in ein Array-Objekt umgewandelt. |
66 | array.to_ary Gibt self zurück. |
67 | array.to_s Gibt self.join zurück. |
68 | array.transpose Annehmen, dass self ein Array von Arrays ist und Zeilen und Spalten vertauscht. |
69 | array.uniq Gibt ein neues Array zurück, das array Entfernt wiederholte Werte. |
70 | array.uniq! Von self Entfernt wiederholte Elemente. Wenn es keine Änderungen gibt (das heißt, keine Wiederholungen gefunden wurden), wird nil。 |
71 | array.unshift(obj, ...) Setzt das Objekt an den Anfang des Arrays und hebt die anderen Elemente um eine Position nach oben. |
72 | array.values_at(selector,...) Gibt ein Array zurück, das die self enthält, die mit den angegebenen selector(Ein oder mehrere) entsprechenden Elementen. Der Selector kann ein Integer-Index oder ein Bereich sein. |
73 | array.zip(arg, ...) [oder] array.zip(arg, ...){ | arr | block } Jeden Parameter in ein Array umwandeln und dann array Die Elemente mit den entsprechenden Elementen in jedem Parameter kombinieren. |
Die Tabelle unten listet die Komprimierungsanweisungen der Methode Array#pack auf.
Anweisung | Beschreibung |
---|---|
@ | Bewegen Sie sich in die absolute Position. |
A | ASCII-Zeichenkette (mit Leerzeichen gefüllt, count ist Breite). |
a | ASCII-Zeichenkette (mit Null gefüllt, count ist Breite). |
B | Bit-Zeichenkette (in absteigender Reihenfolge). |
b | Bit-Zeichenkette (in aufsteigender Reihenfolge). |
C | Unsigniertes Zeichen. |
c | Zeichen. |
D, d | Doppelte Genauigkeit Fließkommazahl, ursprüngliches Format. |
E | Doppelte Genauigkeit Fließkommazahl, little-endian 字节顺序。 |
e | Einfache Genauigkeit Fließkommazahl, little-endian 字节顺序。 |
F, f | Einfache Genauigkeit Fließkommazahl, ursprüngliches Format. |
G | Doppelte Genauigkeit Fließkommazahl, Netzwerk(big-endian) Byte-Reihenfolge. |
g | Einfache Genauigkeit Fließkommazahl, Netzwerk(big-endian) Byte-Reihenfolge. |
H | Hexadezimale Zeichenkette (Hochkeit zuerst). |
h | Hexadezimale Zeichenkette (Niedrigkeit zuerst). |
I | Unsignierte Ganze Zahl. |
i | Ganze Zahl. |
L | Unsignierter long. |
l | Long. |
M | Verweis auf druckbare, MIME-kodierte. |
m | Basis64 Zeichenkette kodieren. |
N | Long, Netzwerk(big-endian) Byte-Reihenfolge. |
n | Short, Netzwerk(big-endian) Byte-Reihenfolge. |
P | Punktet auf eine Struktur (Zeichenkette mit festem Länge). |
p | Punktet auf eine leere Null-Beendete Zeichenkette. |
Q, q | 64 Ziffern. |
S | Unsignierte short. |
s | Kurz. |
U | UTF-8。 |
u | UU 编码字符串。 |
V | Long,little-endian 字节顺序。 |
v | Short,little-endian 字节顺序。 |
w | BER 压缩的整数 \fnm。 |
X | 向后跳过一个字节。 |
x | Null 字节。 |
Z | 与 a 相同,除了 null 会被加上 *。 |
尝试下面的示例,压缩各种数据。
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"
DieAusgabeergebnissebeiderobenbeispielenaufgeführtsind:
a b c abc ABC