English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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.
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:
#!/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:
#!/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:
#!/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:
#!/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]
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:
#!/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 ordem | método & descrição |
---|---|
1 | array & other_array Retorna um novo array contendo os elementos comuns entre os dois arrays, sem repetições. |
2 | array * 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). |
3 | array + other_array Retornar um novo array, que é criado conectando dois arrays para formar um terceiro array. |
4 | array - other_array Retornar um novo array, que é uma cópia do array inicial removendo itens que aparecem no other_array. |
5 | str <=> other_str Comparar str com other_str, retornando -1menor), 0 (igual) ou 1maior). A comparação é case-sensitive. |
6 | array | other_array Remover itens duplicados ao adicionar other_array ao array, retornando um novo array. |
7 | array << 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. |
8 | array <=> other_array Se o array for menor, igual ou maior que other_array, retorna um inteiro (-1ou 0 ou +1) |
9 | array == 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. |
10 | array[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。 |
11 | array[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. |
12 | array.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. |
13 | array.assoc(obj) 搜索一个数组,其元素也是数组,使用 obj.== 把 obj 与每个包含的数组的第一个元素进行比较。如果匹配则返回第一个包含的数组,如果未找到匹配则返回 nil。 |
14 | array.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) |
15 | retorna 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. |
16 | array.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 } |
17 | array.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 } |
18 | substitui os elementos por retorna self valores retornados. nil array.compact |
19 | elementos. A cópia retornada remove todos os array.compact! nil remove todos os elementos nil。 |
20 | elementos. Se não houver mudanças, retorna array.concat(other_array) self adiciona os elementos do other_array ao |
21 | no 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. |
22 | array.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。 |
23 | array.delete_if { |item| block } quando é chamado uma vez para cada um de seus elementos remove se true self de cada elemento. |
24 | array.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. |
25 | array.each_index { |index| block } igual ao Array#each, mas passa o elemento índiceem vez de passar o elemento em si. |
26 | array.empty? se o array em si não contiver elementos, retorna true. |
27 | array.eql?(other) Se array e other é o mesmo objeto, ou se dois arrays contiverem o mesmo conteúdo, retorna true. |
28 | array.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. |
29 | array.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. |
30 | array.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. |
31 | array.flatten Retorna um novo array, que é um array unidimensional e flattenizado (recursivo). |
32 | array.flatten! transforma array Realiza a flattenização. Se não houver mudanças, retorna nil。(O array não contém subarrays.) |
33 | array.frozen? Se array Se estiver congelado (ou temporariamente congelado ao ordenar), retorna true. |
34 | array.hash Calcula o código hash do array. Dois arrays com o mesmo conteúdo terão o mesmo código hash. |
35 | array.include?(obj) Se self contém objSe encontrar, retorna true, caso contrário, retorna false. |
36 | array.index(obj) retorna self do primeiro objeto igual a obj índiceSe não encontrar correspondência, retorna nil。 |
37 | array.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. |
38 | array.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. |
39 | array.insert(index, obj...) no dado índice Insira o valor dado antes do elemento, o índice pode ser negativo. |
40 | array.inspect array.inspect |
41 | Cria uma versão impressível do array. array.join(sep=$,) Retorna uma string, convertendo cada elemento do array em uma string e usando sep |
42 | criado com separadores. retorna self array.last [ou] array.last(n)O último elemento do array. Se o array forvazia nil。 |
43 | se não for retorna self array.length |
44 | O 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 } |
45 | Cria 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 |
46 | array.nitems retorna self non-número de elementos nil. Pode ser zero. |
47 | array.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. |
48 | array.pop de array Remove o último elemento do meio, retornando esse elemento. Se array Retorna sem nada se estiver vazio. nil。 |
49 | array.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. |
50 | array.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. |
51 | array.reject { |item| block } Retorna um novo array contendo os itens do array quando block não for true. |
52 | array.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. |
53 | array.replace(other_array) transforma array o conteúdo substitui por other_array o conteúdo, cortando ou expandindo conforme necessário. |
54 | array.reverse Retorna um novo array contendo os elementos do array em ordem inversa. |
55 | array.reverse! transforma array inverte. |
56 | array.reverse_each {|item| bloco } igual a Array#each, mas com array inverte. |
57 | array.rindex(obj) Retorna o índice do último objeto igual a obj no array. Se não encontrar correspondência, retorna nil。 |
58 | array.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. |
59 | array.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。 |
60 | array.size retorna array comprimento (número de elementos). Alias de length. |
61 | array.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。 |
62 | array.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。 |
63 | array.sort [ou] array.sort { | a,b | bloco } Retorna um array ordenado. |
64 | array.sort! [ou] array.sort! { | a,b | bloco } ordena o array. |
65 | array.to_a retorna self。Se no Array Chama-se no subtipo, então o parâmetro recebido é convertido em um objeto Array. |
66 | array.to_ary retorna self. |
67 | array.to_s retorna self.join. |
68 | array.transpose supondo que self seja um array de arrays, e troca linhas e colunas. |
69 | array.uniq retorna um novo array, removendo array removendo valores repetidos. |
70 | array.uniq! de self remove elementos repetidos. Se não houver mudanças (isto é, não foram encontrados repetidos), retorna nil。 |
71 | array.unshift(obj, ...) coloca o objeto no início do array, movendo os outros elementos uma posição para cima. |
72 | array.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. |
73 | array.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. |
A tabela a seguir lista as instruções de compressão do método Array#pack.
instrução | descrição |
---|---|
@ | mover para posição absoluta. |
A | string ASCII (preenchimento space, count é a largura). |
a | string ASCII (preenchimento null, count é a largura). |
B | string de bits (decrescente) |
b | string de bits (crescente). |
C | sem sinal caractere. |
c | caractere. |
D, d | número flutuante de precisão dupla, formato nativo. |
E | número flutuante de precisão dupla, little-ordem de bytes endian |
e | número flutuante de precisão simples, little-ordem de bytes endian |
F, f | número flutuante de precisão simples, formato nativo. |
G | número flutuante de precisão dupla, rede(big-ordem de bytes (endian). |
g | número flutuante de precisão simples, rede(big-ordem de bytes (endian). |
H | string hexadecimal (alto para baixo). |
h | string hexadecimal (baixo para alto). |
I | sem sinal inteiro. |
i | inteiro. |
L | sem sinal long. |
l | Long. |
M | referência codificável, MIME. |
m | Base64 codificação de string. |
N | Long, rede(big-ordem de bytes (endian). |
n | Short, rede(big-ordem de bytes (endian). |
P | aponta para uma estrutura (string de comprimento fixo). |
p | aponta para uma string de terminação nula. |
Q, q | 64 dígitos de posição. |
S | sem sinal short. |
s | Curto. |
U | UTF-8。 |
u | String de codificação UU |
V | Long, little-ordem de bytes endian |
v | Short, little-ordem de bytes endian |
w | Inteiro comprimido BER \fnm. |
X | Pular um byte para trás. |
x | Byte Nulo |
Z | Igual a a, exceto null será adicionado *。 |
Tente o exemplo a seguir, comprimindo vários dados.
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