Массивы в Ruby упорядочены, целые индексированные коллекции любого объекта. Каждый элемент в массиве связан с индексом и называется.
Индексирование массива начинается с 0, как на C или Java. Отрицательный индекс принимается относительно конца массива — то есть индекс -1 указывает последний элемент массива, -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
Это приведет к следующему результату:
20 20
Вы можете присвоить значение каждому элементу массива следующим образом:
#!/usr/bin/ruby names = Array.new(4, "mac") puts "#{names}"
Это приведет к следующему результату:
["mac", "mac", "mac", "mac"]
Вы также можете использовать блок с новым, заполняющим каждый элемент с тем, что блок:
#!/usr/bin/ruby nums = Array.new(10) { |e| e = e * 2 } puts "#{nums}"
Это приведет к следующему результату:
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
Существует еще один метод Array, []. Он работает так:
nums = Array.[](1, 2, 3, 4,5)
Еще одна форма создания массива заключается в следующем:
nums = Array[1, 2, 3, 4,5]
Модуль Kernel, доступный в ядре Ruby, имеет метод Array, который принимает только один аргумент. Здесь метод принимает диапазон в качестве аргумента для создания массива цифр:
#!/usr/bin/ruby digits = Array(0..9) puts "#{digits}"
Это приведет к следующему результату:
[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}"
Это приведет к следующему результату:
6
Ниже приведены общедоступные методы массива (предполагая, что массив является объектом массива):
В следующих таблицах перечислены директивы pack для использования с массивом Array # pack.
Попробуйте следующий пример, чтобы упаковать различные данные.
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