English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Arrays (Array) Ruby

Os arrays do Ruby são conjuntos ordenados de índices inteiros de qualquer objeto. Cada elemento do array está associado a um índice e pode ser obtido através do índice.

O índice do array começa em 0, como em C ou Java. Um índice negativo se relaciona com o final do array, ou seja, o índice de -1 Representa o último elemento do array-2 representa o segundo elemento da última posição do array, e assim por diante.

Os arrays Ruby podem armazenar objetos como String, Integer, Fixnum, Hash, Symbol, etc., e podem ser outros arrays.

Os arrays Ruby não precisam de tamanho especificado; ao adicionar elementos ao array, o array Ruby aumenta automaticamente.

criar array

Existem várias maneiras de criar ou inicializar um array. Uma maneira é através de new métodos de classe:

names = Array.new

Você pode definir o tamanho do array no momento da criação do array:

names = Array.new(20)

array names tamanho ou comprimento de 20 elementos. Você pode usar o método size ou length para retornar o tamanho do array:

Exemplo Online

#!/usr/bin/ruby
 
names = Array.new(20)
puts names.size # retorna 20
puts names.length # retorna 20

O resultado de execução do exemplo acima é:

20
20

Você pode atribuir valores a cada elemento do array, conforme mostrado a seguir:

Exemplo Online

#!/usr/bin/ruby
 
names = Array.new(4, "mac")
 
puts "#{names}"

O resultado de execução do exemplo acima é:

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

Você também pode usar um bloco com new, preenchendo cada elemento com o resultado do cálculo dentro do bloco:

Exemplo Online

#!/usr/bin/ruby
 
nums = Array.new(10) { |e| e = e * 2 }
 
puts "#{nums}"

O resultado de execução do exemplo acima é:

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

O Array também tem outro método, [], conforme mostrado a seguir:

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

Outra forma de criar um array é como mostrado a seguir:

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

No módulo Ruby core, há um método do Array que aceita um único parâmetro e cria um array de números usando um intervalo como parâmetro:

Exemplo Online

#!/usr/bin/ruby
 
digits = Array(0..9)
 
puts "#{digits}"

O resultado de execução do exemplo acima é:

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

métodos integrados do array

Precisamos de um exemplo de objeto Array para chamar métodos de Array. A seguir estão as maneiras de criar objetos Array:

Array.[](...) [ou] Array[...] [ou] [...]

Isso retornará um novo array preenchido com o objeto dado. Agora, usando o objeto criado, podemos chamar qualquer método disponível. Por exemplo:

Exemplo Online

#!/usr/bin/ruby
 
digits = Array(0..9)
 
num = digits.at(6)
 
puts "#{num}"

O resultado de execução do exemplo acima é:

6

A seguir estão os métodos comuns do Array (presumindo array é um objeto Array):

número de ordemmétodo & descrição
1array & other_array
Retorna um novo array contendo os elementos comuns entre os dois arrays, sem repetições.
2array * int [ou] array * str
Retornar um novo array, que é criado conectando cópias int do self. Com o parâmetro String, é equivalente a self.join(str).
3array + other_array
Retornar um novo array, que é criado conectando dois arrays para formar um terceiro array.
4array - other_array
Retornar um novo array, que é uma cópia do array inicial removendo itens que aparecem no other_array.
5str <=> other_str
Comparar str com other_str, retornando -1menor), 0 (igual) ou 1maior). A comparação é case-sensitive.
6array | other_array
Remover itens duplicados ao adicionar other_array ao array, retornando um novo array.
7array << obj
Adicionar o objeto dado ao final do array. A expressão retorna o próprio array, então vários adicionamentos podem ser concatenados.
8array <=> other_array
Se o array for menor, igual ou maior que other_array, retorna um inteiro (-1ou 0 ou +1)
9array == other_array
Se dois arrays contiverem o mesmo número de elementos e cada elemento for igual ao outro array correspondente (de acordo com Object.==), então esses arrays são iguais.
10array[index] [ou] array[start, length] [ou]
array[range] [ou] array.slice(index) [ou]
array.slice(start, length) [ou] array.slice(range)

retorna o índice do índice do elemento, ou retorna de início começando até comprimento subarray de elementos, ou retorna range o subarray especificado. Índices negativos contam a partir do final do array(-1 é o último elemento)。Se índice(ou índice de início)fora do escopo, então retorna nil
11array[index] = obj [ou]
array[start, length] = obj ou an_array ou nil [ou]
array[range] = obj ou an_array ou nil

definir o índice como índice o elemento, ou substituir a partir de início começando até comprimento subarray de elementos, ou substituir range subarray especificado. Se o índice for maior do que a capacidade atual do array, o array se expandirá automaticamente. Índices negativos começam a contar do final do array. Se comprimento se for zero, inserir elemento. Se no segundo ou terceiro formato for usado nilentão a partir de self Remover elemento.
12array.abbrev(pattern = nil)
array.collect! { |item| block } self Cálculo explícito de conjuntos de abreviações de strings. Se passar um padrão ou uma string, considera apenas quando a string coincide com o padrão ou começa com essa string.
13array.assoc(obj)
搜索一个数组,其元素也是数组,使用 obj.== 把 obj 与每个包含的数组的第一个元素进行比较。如果匹配则返回第一个包含的数组,如果未找到匹配则返回 nil
14array.at(index)
procura um array cujos elementos também são arrays, usando obj.== para comparar obj com o primeiro elemento de cada array contido. Se houver correspondência, retorna o primeiro array contido, se não encontrar correspondência, retorna self array.at(index)
15retorna o elemento na posição index. Um índice negativo começa de
começando pelo final. Se o índice estiver fora do intervalo, retorna nil.
16array.clear
remove todos os elementos do array.

array.collect! { |item| block } self a cada elemento é chamado uma vez para cada um de seus elementosarray.collect { |item| block }
17array.collect { |item| block } [or]
array.map { |item| block }

array.collect! { |item| block } self a cada elemento é chamado uma vez para cada um de seus elementosarray.collect! { |item| block } [or] é chamado uma vez para cada um de seus elementos array.map! { |item| block }
18substitui os elementos por
retorna self valores retornados. nil array.compact
19elementos. A cópia retornada remove todos os
array.compact! nil remove todos os elementos nil
20elementos. Se não houver mudanças, retorna
array.concat(other_array) self adiciona os elementos do other_array ao
21no qual.
array.delete(obj) [or]

de self array.delete(obj) { block } obj remover o igual nil. Se não encontrar itens iguais, retorna é chamado uma vez para cada um de seus elementosse não encontrar itens iguais e fornecer código opcional é chamado uma vez para cada um de seus elementos o resultado.
22array.delete_at(index)
remove o elemento especificado índice o elemento na posição, e retorna o elemento. Se o índice estiver fora do intervalo, retorna nil
23array.delete_if { |item| block }
quando é chamado uma vez para cada um de seus elementos remove se true self de cada elemento.
24array.each { |item| block }
array.collect! { |item| block } self a cada elemento é chamado uma vez para cada um de seus elementospassando o elemento como parâmetro.
25array.each_index { |index| block }
igual ao Array#each, mas passa o elemento índiceem vez de passar o elemento em si.
26array.empty?
se o array em si não contiver elementos, retorna true.
27array.eql?(other)
Se array e other é o mesmo objeto, ou se dois arrays contiverem o mesmo conteúdo, retorna true.
28array.fetch(index) [or]
array.fetch(index, default) [or]
array.fetch(index) { |index| block }

Tentativa de retorno de posição índice do elemento. índice Localizado fora do array, a primeira forma lançará IndexError uma exceção, a segunda forma retornará defaultA terceira forma retornará a chamada é chamado uma vez para cada um de seus elementos Inserido índice o valor. índice Começa a contar a partir do final do array.
29array.fill(obj) [ou]
array.fill(obj, start [, length]) [ou]
array.fill(obj, range) [ou]
array.fill { |index| bloco } [ou]
array.fill(start [, length] ) { |index| bloco } [ou]
array.fill(range) { |index| bloco }

As três primeiras formas configuram self os elementos selecionados como obj。Com nil começa com zero.nil de comprimento equivalente a self.length。As três últimas formas usam o valor do blocoPreenchearray.é chamado uma vez para cada um de seus elementos Passa por meio de cada índice absoluto de elementos preenchidos.
30array.first [ou]
array.first(n)

Retorna o primeiro elemento do array ou os primeiros n elementos. Se o array estiver vazio, a primeira forma retorna nil,a segunda forma retorna um array vazio.
31array.flatten
Retorna um novo array, que é um array unidimensional e flattenizado (recursivo).
32array.flatten!
transforma array Realiza a flattenização. Se não houver mudanças, retorna nil。(O array não contém subarrays.)
33array.frozen?
Se array Se estiver congelado (ou temporariamente congelado ao ordenar), retorna true.
34array.hash
Calcula o código hash do array. Dois arrays com o mesmo conteúdo terão o mesmo código hash.
35array.include?(obj)
Se self contém objSe encontrar, retorna true, caso contrário, retorna false.
36array.index(obj)
retorna self do primeiro objeto igual a obj índiceSe não encontrar correspondência, retorna nil
37array.indexes(i1, i2, ... iN) [ou]
array.indices(i1, i2, ... iN)

Este método foi descontinuado na versão mais recente do Ruby, por favor, use Array#values_at.
38array.indices(i1, i2, ... iN) [ou]
array.indexes(i1, i2, ... iN)

Este método foi descontinuado na versão mais recente do Ruby, por favor, use Array#values_at.
39array.insert(index, obj...)
no dado índice Insira o valor dado antes do elemento, o índice pode ser negativo.
40array.inspect
array.inspect
41Cria uma versão impressível do array.
array.join(sep=$,) Retorna uma string, convertendo cada elemento do array em uma string e usando sep
42criado com separadores.
retorna self array.last [ou] array.last(n)O último elemento do array. Se o array forvazia nil
43se não for
retorna self array.length
44O número de elementos no array. Pode ser zero.
array.map { |item| block } [ou]

array.collect! { |item| block } self por é chamado uma vez para cada um de seus elementosarray.collect { |item| block }
45Cria um novo array contendo os valores retornados pelo block.
array.map! { |item| block } [ou]

array.collect! { |item| block } array por é chamado uma vez para cada um de seus elementose substitui o elemento pelo valor retornado pelo block. block
46array.nitems
retorna self non-número de elementos nil. Pode ser zero.
47array.pack(aTemplateString)
Com base nas instruções em aTemplateString, comprime o conteúdo do array em uma sequência binária. As instruções A, a e Z podem ter um número após elas para indicar a largura do campo resultante. As outras instruções também podem ter um número para indicar o número de elementos a serem convertidos. Se o número for um asterisco (*),todos os elementos restantes do array serão convertidos. Pode seguir uma instrução qualquer um sublinhado (_) para especificar que o tamanho deve usar o tamanho local do plataforma de baixo nível, caso contrário, usará um tamanho consistente independentemente da plataforma. Os espaços em branco são ignorados em strings de template.
48array.pop
de array Remove o último elemento do meio, retornando esse elemento. Se array Retorna sem nada se estiver vazio. nil
49array.push(obj, ...)
Adiciona o obj dado ao final do array. A expressão retorna o próprio array, permitindo que várias adições sejam feitas consecutivamente.
50array.rassoc(key)
Procura um array cujos elementos também são arrays, usando == para key Compare com o segundo elemento de cada array contido. Se houver correspondência, retorna o primeiro array contido.
51array.reject { |item| block }
Retorna um novo array contendo os itens do array quando block não for true.
52array.reject! { |item| block }
Quando o block for verdadeiro, remove de array Remove elementos, retornando sem alterações se não houver mudanças. nilÉ equivalente a Array#delete_if.
53array.replace(other_array)
transforma array o conteúdo substitui por other_array o conteúdo, cortando ou expandindo conforme necessário.
54array.reverse
Retorna um novo array contendo os elementos do array em ordem inversa.
55array.reverse!
transforma array inverte.
56array.reverse_each {|item| bloco }
igual a Array#each, mas com array inverte.
57array.rindex(obj)
Retorna o índice do último objeto igual a obj no array. Se não encontrar correspondência, retorna nil
58array.select {|item| bloco }
Chama um bloco contínuo de elementos passados para o array, retornando um array contendo o que o bloco retorna true o valor do elemento.
59array.shift
retorna self o primeiro elemento, removendo-o (movendo todos os outros elementos uma posição para baixo). Se o array estiver vazio, então retorna nil
60array.size
retorna array comprimento (número de elementos). Alias de length.
61array.slice(índice) [ou] array.slice(início, comprimento) [ou]
array.slice(range) [ou] array[índice] [ou]
array[início, comprimento] [ou] array[range]

retorna o índice do índice do elemento, ou retorna de início começando até comprimento subarray de elementos, ou retorna range o subarray especificado. Índices negativos contam a partir do final do array(-1 é o último elemento)。Se índice(ou índice de início)fora do escopo, então retorna nil
62array.slice!(índice) [ou] array.slice!(início, comprimento) [ou]
array.slice!(range)

remove índice(com comprimento opcional)ou range o elemento especificado. Retorna o objeto removido, subarray, se índice fora do escopo, então retorna nil
63array.sort [ou] array.sort { | a,b | bloco }
Retorna um array ordenado.
64array.sort! [ou] array.sort! { | a,b | bloco }
ordena o array.
65array.to_a
retorna self。Se no Array Chama-se no subtipo, então o parâmetro recebido é convertido em um objeto Array.
66array.to_ary
retorna self.
67array.to_s
retorna self.join.
68array.transpose
supondo que self seja um array de arrays, e troca linhas e colunas.
69array.uniq
retorna um novo array, removendo array removendo valores repetidos.
70array.uniq!
de self remove elementos repetidos. Se não houver mudanças (isto é, não foram encontrados repetidos), retorna nil
71array.unshift(obj, ...)
coloca o objeto no início do array, movendo os outros elementos uma posição para cima.
72array.values_at(selector,...)
retorna um array contendo self com os elementos especificados. seletor(um ou mais) elementos correspondentes. O seletor pode ser um índice inteiro ou um intervalo.
73array.zip(arg, ...) [ou]
array.zip(arg, ...){ | arr | bloco }

converter qualquer parâmetro em um array, e então array os elementos são combinados com os elementos correspondentes de cada parâmetro.

instrução pack do array

A tabela a seguir lista as instruções de compressão do método Array#pack.

instruçãodescrição
@mover para posição absoluta.
Astring ASCII (preenchimento space, count é a largura).
astring ASCII (preenchimento null, count é a largura).
Bstring de bits (decrescente)
bstring de bits (crescente).
Csem sinal caractere.
ccaractere.
D, dnúmero flutuante de precisão dupla, formato nativo.
Enúmero flutuante de precisão dupla, little-ordem de bytes endian
enúmero flutuante de precisão simples, little-ordem de bytes endian
F, fnúmero flutuante de precisão simples, formato nativo.
Gnúmero flutuante de precisão dupla, rede(big-ordem de bytes (endian).
gnúmero flutuante de precisão simples, rede(big-ordem de bytes (endian).
Hstring hexadecimal (alto para baixo).
hstring hexadecimal (baixo para alto).
Isem sinal inteiro.
iinteiro.
Lsem sinal long.
lLong.
Mreferência codificável, MIME.
mBase64 codificação de string.
NLong, rede(big-ordem de bytes (endian).
nShort, rede(big-ordem de bytes (endian).
Paponta para uma estrutura (string de comprimento fixo).
paponta para uma string de terminação nula.
Q, q64 dígitos de posição.
Ssem sinal short.
sCurto.
UUTF-8。
uString de codificação UU
VLong, little-ordem de bytes endian
vShort, little-ordem de bytes endian
wInteiro comprimido BER \fnm.
XPular um byte para trás.
xByte Nulo
ZIgual a a, exceto null será adicionado *。

Exemplo Online

Tente o exemplo a seguir, comprimindo vários dados.

Exemplo Online

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"

O resultado de execução do exemplo acima é:

a  b  c
abc
ABC