Tamanho de um array em Ruby
Em Ruby, para descobrir o tamanho de um array ao menos 3 métodos podem ser utilizados. Confira neste artigo se você sabe utilizá-los corretamente.
Vamos começar com um exemplo trivial:
arr = [1, 2, 3]
arr.length # => 3
arr.size # => 3
Até aí nenhuma novidade, certo? O método Array#length devolve o tamanho de um array
(Array#size é apenas um alias para Array#length). Mas observe o código abaixo:
arr = Array.new
arr[5] = 'caio'
arr.size # => Qual o resultado?
Você errou se disse que o resultado é 1. O resultado é 6. Isso porquê o índice 5, inicializado
no nosso exemplo, corresponde ao sexto elemento do array. Do índice 0 a 4 também temos valores
inicializados: todos esses índices possuem o valor nil.
arr[0..4] # => [nil, nil, nil, nil, nil]
Mas e se quisermos saber o tamanho de um array excluindo os valores nil? Para essas
situações devemos utilizar Array#nitems.
arr = Array.new
arr[5] = 'ruby'
arr[10] = 'caio'
arr.length # => 11
arr.nitems # => 2
Conclusão: se você inicializar os índices de um array manualmente, de maneira não-contínua,
você deve lembrar que Array#length e Array#nitems provavelmente retornarão valores
diferentes.
