English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Ruby array es una colección ordenada de enteros que indexan cualquier objeto. Cada elemento del array está asociado con un índice y se puede obtener mediante él.
El índice del array comienza en 0, como en C o Java. Un índice negativo se refiere al final del array, es decir, el índice de -1 Representa el último elemento del array,-2 representa el segundo elemento desde el final del array, y así sucesivamente.
Los arrays Ruby pueden almacenar objetos como String, Integer, Fixnum, Hash, Symbol, e incluso otros arrays.
Los arrays Ruby no necesitan especificar el tamaño, ya que se expanden automáticamente al agregar elementos.
Hay varias formas de crear o inicializar un array. Una de ellas es a través de new Métodos de clase:
names = Array.new
Puede establecer el tamaño del array al crearlo:
names = Array.new(20)
Array names El tamaño o longitud es 20 elementos. Puede usar size o length para obtener el tamaño del array:
#!/usr/bin/ruby names = Array.new(20) puts names.size # Devuelve 20 puts names.length # Devuelve 20
以上示例运行输出结果为:
20 20
Puede asignar valores a cada elemento del array, como se muestra a continuación:
#!/usr/bin/ruby names = Array.new(4, "mac") puts "#{names}"
以上示例运行输出结果为:
["mac", "mac", "mac", "mac"]
También puede usar un bloque con new, llenando cada elemento con el resultado del cálculo dentro del bloque:
#!/usr/bin/ruby nums = Array.new(10) { |e| e = e * 2 } puts "#{nums}"
以上示例运行输出结果为:
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
El array también tiene otro método, [], como se muestra a continuación:
nums = Array.[](1, 2, 3, 4,5)
Otra forma de crear un array se muestra a continuación:
nums = Array[1, 2, 3, 4,5]
En el módulo Ruby core, hay un método de Array que recibe un solo parámetro y crea un array de números utilizando un rango como parámetro:
#!/usr/bin/ruby digits = Array(0..9) puts "#{digits}"
以上示例运行输出结果为:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Necesitamos un ejemplo de objeto Array para llamar a los métodos de Array. A continuación se muestra cómo crear un objeto Array de ejemplo:
Array.[](...) [o] Array[...] [o] [...]
Esto devolverá un nuevo array lleno con el objeto dado. Ahora, utilizando el objeto creado, podemos llamar a cualquier método disponible. Por ejemplo:
#!/usr/bin/ruby digits = Array(0..9) num = digits.at(6) puts "#{num}"
以上示例运行输出结果为:
6
A continuación se presentan los métodos de array comunes (asumiendo array Es un objeto Array):
Número de orden | Método & Descripción |
---|---|
1 | array & other_array Devuelve un nuevo array que contiene los elementos comunes de dos arrays sin repetición. |
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) regresa el índice del índice hasta el elemento, o regresa desde inicio desde longitud subarray de elementos, o regresa rango el subarray especificado. Los índices negativos comienzan a contar desde el final del array(-1 es el último elemento)。Si índice(o el índice de inicio)fuera de rango, regresa nil。 |
11 | array[index] = obj [or] array[start, length] = obj or an_array or nil [or] array[range] = obj or an_array or nil 设置索引为 índice 的元素,或者替换从 inicio desde longitud 个元素的子数组,或者替换 rango 指定的子数组。如果索引大于数组的当前容量,那么数组会自动增长。负值索引从数组末尾开始计数。如果 longitud 为零则插入元素。如果在第二种或第三种形式中使用了 nil,则从 self 删除元素。 |
12 | array.abbrev(pattern = nil) array.collect! { |item| block } self 中的字符串计算明确的缩写集合。如果传递一个模式或一个字符串,只考虑当字符串匹配模式或者以该字符串开始时的情况。 |
13 | array.assoc(obj) busca un array, cuyos elementos también son arrays, compara obj.== con cada primer elemento de las arrays que contienen obj. Si hay coincidencia, devuelve la primera array que contiene, si no se encuentra coincidencia, devuelve nil。 |
14 | array.at(index) devuelve el elemento en la posición index. Un índice negativo comienza desde self comienza a contar desde el final. Si el índice está fuera de rango, devuelve nil. |
15 | array.clear eliminar todos los elementos del array. |
16 | array.collect { |item| block } [or] array.map { |item| block } array.collect! { |item| block } self se llama una vez a cada elemento Se llama una vez a cada uno de los elementosarray.collect { |item| block } |
17 | array.collect! { |item| block } [or] array.map! { |item| block } array.collect! { |item| block } self se llama una vez a cada elemento Se llama una vez a cada uno de los elementosreemplazar el elemento con Se llama una vez a cada uno de los elementos devueltos por el valor. |
18 | array.compact regresa self una copia del array, eliminando todos los nil elementos. |
19 | array.compact! eliminar todos los elementos nil devuelve si no hay cambios. nil。 |
20 | elementos. array.concat(other_array) self agregar los elementos del array other_array a |
21 | en. array.delete(obj) [or] desde self array.delete(obj) { block } obj eliminar el elemento igual nil. Si no se encuentra un elemento equivalente y se proporciona un código opcional Se llama una vez a cada uno de los elementosdevuelve Se llama una vez a cada uno de los elementos el resultado. |
22 | array.delete_at(index) eliminar el elemento especificado índice el elemento en la posición especificada, y devuelve ese elemento. Si el índice está fuera de rango, devuelve nil。 |
23 | array.delete_if { |item| block } cuando Se llama una vez a cada uno de los elementos eliminar cuando self cada elemento. |
24 | array.each { |item| block } array.collect! { |item| block } self se llama una vez a cada elemento Se llama una vez a cada uno de los elementoscomo parámetro. |
25 | array.each_index { |index| block } es igual que Array#each, pero pasa el elemento índiceen lugar de pasar el elemento en sí. |
26 | array.empty? si el array en sí no contiene elementos, devuelve true. |
27 | array.eql?(other) Si array y other es el mismo objeto, o dos arreglos con contenido idéntico, devuelve true. |
28 | array.fetch(index) [or] array.fetch(index, default) [or] array.fetch(index) { |index| block } intenta devolver la posición índice elemento en la posición. Si índice se encuentra fuera del array, la primera forma lanzará IndexError ,la segunda forma devolverá default,la tercera forma devolverá la excepción Se llama una vez a cada uno de los elementos se introduce índice los valores. Los valores negativos índice Se cuenta desde el final del array. |
29 | array.fill(obj) [or] array.fill(obj, start [, length]) [or] array.fill(obj, range) [or] array.fill { |index| block } [or] array.fill(start [, length] ) { |index| block } [or] array.fill(range) { |index| block } las primeras tres formas establecen self los elementos seleccionados como obj。Con nil el inicio es cero.nil la longitud es equivalente a self.length。Las últimas tres formas utilizan el valor del bloquerellenararray.Se llama una vez a cada uno de los elementos Se pasa mediante la indexación absoluta de cada elemento rellenado. |
30 | array.first [or] array.first(n) Devuelve el primer elemento del array o los primeros n elementos. Si el array está vacío, la primera forma devuelve nil,la segunda forma devuelve un array vacío。 |
31 | array.flatten Devuelve un nuevo array, el nuevo array es un array plano unidimensional (recursivo). |
32 | array.flatten! invierte array Realiza la planificación. Si no hay cambios, devuelve nil。(El array no contiene subarrays。) |
33 | array.frozen? Si array está congelado (o temporalmente congelado al ordenar), devuelve true。 |
34 | array.hash calcula el código hash del array. Dos arrays con el mismo contenido tendrán el mismo código hash. |
35 | array.include?(obj) Si self contiene obj,si es true, de lo contrario, false。 |
36 | array.index(obj) regresa self del primer objeto que es igual a obj índice。Si no se encuentra una coincidencia, se devuelve nil。 |
37 | array.indexes(i1, i2, ... iN) [or] array.indices(i1, i2, ... iN) Este método ha sido descontinuado en la última versión de Ruby, por lo tanto, utilice Array#values_at. |
38 | array.indices(i1, i2, ... iN) [or] array.indexes(i1, i2, ... iN) Este método ha sido descontinuado en la última versión de Ruby, por lo tanto, utilice Array#values_at. |
39 | array.insert(index, obj...) Dado índice Inserta el valor dado antes del elemento, index puede ser un valor negativo. |
40 | array.inspect array.inspect |
41 | Crea una versión imprimible del array. array.join(sep=$,) Devuelve una cadena que convierte cada elemento del array en una cadena y los une usando sep |
42 | se crea mediante separación. regresa self array.last [or] array.last(n)El último elemento dees vacío nil。 |
43 | Si regresa self array.length |
44 | El número de elementos en array.map { |item| block } [or] array.collect! { |item| block } self por Se llama una vez a cada uno de los elementosarray.collect { |item| block } |
45 | Crea un nuevo array que contiene los valores devueltos por block. array.map! { |item| block } [or] array.collect! { |item| block } array por Se llama una vez a cada uno de los elementosy reemplaza los elementos con el valor devuelto por block. block |
46 | array.nitems regresa self en non-El número de elementos nil. Puede ser cero. |
47 | array.pack(aTemplateString) Según las instrucciones de aTemplateString, comprime el contenido del array en una secuencia binaria. Las instrucciones A, a y Z pueden seguir un número que representa el ancho del campo de resultado. Las instrucciones restantes también pueden tener un número que representa la cantidad de elementos del array a convertir. Si el número es un asterisco (*),se convertirán todos los elementos restantes del array. Después de cualquier instrucción se puede seguir un subrayado (_) para especificar que el tamaño se use del tamaño local del plataforma subyacente, de lo contrario se usará un tamaño consistente con la plataforma. |
48 | array.pop desde array Remueve el último elemento del medio y devuelve ese elemento. Si array Devuelve una vacío si está vacío. nil。 |
49 | array.push(obj, ...) Añade el obj dado al final del array. La expresión devuelve el array en sí, por lo que se pueden concatenar varios añadidos. |
50 | array.rassoc(key) Busca un array cuyos elementos también son arrays, usando == para key Compara cada segundo elemento de los arrays incluidos. Si coincide, devuelve el primer array que contiene. |
51 | array.reject { |item| block } Devuelve un nuevo array que contiene los elementos del array cuando block no es true. |
52 | array.reject! { |item| block } Cuando el block es verdadero, desde array Elimina elementos, y si no hay cambios devuelve. nilEs equivalente a Array#delete_if. |
53 | array.replace(other_array) invierte array el contenido en other_array el contenido, truncando o expandiéndolo según sea necesario. |
54 | array.reverse regresa un nuevo array que contiene los elementos del array en orden inverso. |
55 | array.reverse! invierte array invierte. |
56 | array.reverse_each {|item| bloque } es igual a Array#each, pero invierte array invierte. |
57 | array.rindex(obj) regresa el índice del último objeto igual a obj en array. Si no se encuentra una coincidencia, regresa nil。 |
58 | array.select {|item| bloque } invoca el bloque con elementos consecutivos del array, regresando un array que contiene lo que devuelve el bloque. true al valor del elemento. |
59 | array.shift regresa self el primer elemento del array, y lo elimina (moviendo todos los otros elementos una posición hacia abajo). Si el array está vacío, regresa nil。 |
60 | array.size regresa array la longitud (número de elementos). Alias de length. |
61 | array.slice(índice) [o] array.slice(inicio, longitud) [o] array.slice(rango) [o] array[índice] [o] array[inicio, longitud] [o] array[rango] regresa el índice del índice hasta el elemento, o regresa desde inicio desde longitud subarray de elementos, o regresa rango el subarray especificado. Los índices negativos comienzan a contar desde el final del array(-1 es el último elemento)。Si índice(o el índice de inicio)fuera de rango, regresa nil。 |
62 | array.slice!(índice) [o] array.slice!(inicio, longitud) [o] array.slice!(rango) eliminar índice(longitud opcional)o rango el elemento especificado. Regresa el objeto eliminado, el subarray, si índice fuera de rango, regresa nil。 |
63 | array.sort [o] array.sort { | a,b | bloque } regresa un array ordenado. |
64 | array.sort! [o] array.sort! { | a,b | bloque } ordena el array. |
65 | array.to_a regresa self。Si en Array Llamar al método en la subclase, convierte los parámetros recibidos en un objeto Array. |
66 | array.to_ary devuelve self. |
67 | array.to_s devuelve self.join. |
68 | array.transpose asumiendo que self es un array de arrays y cambia filas y columnas. |
69 | array.uniq devuelve un nuevo array que elimina array elementos repetidos. |
70 | array.uniq! desde self eliminar elementos repetidos. Si no hay cambios (es decir, no se encontraron repetidos), se devuelve nil。 |
71 | array.unshift(obj, ...) coloca el objeto al principio del array, otros elementos se desplazan una posición. |
72 | array.values_at(selector,...) devuelve un array que contiene self con los elementos dados selectoruno o más) elementos correspondientes. El selector puede ser un índice entero o un rango. |
73 | array.zip(arg, ...) [o] array.zip(arg, ...){ | arr | block } cualquier parámetro se convierte en un array, luego array los elementos se combinan con los elementos correspondientes de cada parámetro. |
La siguiente tabla enumera las instrucciones de compresión del método Array#pack.
instrucción | descripción |
---|---|
@ | moverse a una posición absoluta. |
A | cadena ASCII (rellenada con espacio, count es el ancho). |
a | cadena ASCII (rellenada con null, count es el ancho). |
B | cadena de bits (descendente). |
b | cadena de bits (ascendente). |
C | carácter sin signo. |
c | carácter. |
D, d | número de coma flotante de precisión doble, formato nativo. |
E | número de coma flotante de precisión doble, little.-endian 字节顺序。 |
e | número de coma flotante de precisión simple, little.-endian 字节顺序。 |
F, f | número de coma flotante de precisión simple, formato nativo. |
G | número de coma flotante de precisión doble, red de gran-orden de bytes endian). |
g | número de coma flotante de precisión simple, red de gran-orden de bytes endian). |
H | cadena hexadecimal (alta prioridad). |
h | cadena hexadecimal (bajo prioridad). |
I | entero sin signo. |
i | entero. |
L | Long sin signo. |
l | Long |
M | referencia codificada, codificación MIME. |
m | Base64 código de cadena. |
N | Long, red de gran-orden de bytes endian). |
n | Short, red de gran-orden de bytes endian). |
P | apunta a una estructura (cadena de longitud fija). |
p | apunta a una cadena de finalización nula. |
Q, q | 64 dígito de posición. |
S | Short sin signo. |
s | Corto. |
U | UTF-8。 |
u | UU 编码字符串。 |
V | Long,小端-endian 字节顺序。 |
v | Short,小端-endian 字节顺序。 |
w | BER 压缩的整数 \fnm。 |
X | 向后跳过一个字节。 |
x | 空字节。 |
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"
以上示例运行输出结果为:
a b c abc ABC