Array

Объект Array представляет собой упорядоченную коллекцию объектов, называемых элементами, с целочисленной индексацией. Объект представляет собой структуру данных массива. Элементом может быть любой объект (даже другой массив). Элементы могут представлять собой любую комбинацию объектов разных типов.

Создание массива и доступ к элементам

array = [1, 'Bob', 4.33, 'another string']

array.first
=> 1

array.last
=> "another string"

array[2]
=> 4.33

Изменение массива

array.pop
=> "another string"

array
=> [1, "Bob", 4.33]

array.push("another string")
=> [1, "Bob", 4.33, "another string"]

Изменение вызывающего кода и аргументов

Эта концепция очень важна, поскольку метод может неожиданно изменить объект, используемый в качестве вызывающего объекта или аргумента. Это может стать источником серьёзной путаницы, поэтому важно понимать, что метод делает со своими аргументами и вызывающим объектом, и что этот метод возвращает.

def mutate(arr)
arr.pop
end

def not_mutate(arr)
arr.select { |i| i > 3 }
end

array = [1, 2, 3, 4, 5, 6]

mutate(array)
array
=> [1, 2, 3, 4, 5]

not_mutate(array)
array
=> [1, 2, 3, 4, 5]

Внутри метода #mutate метод array.pop изменяет вызывающий её объект. Это, в свою очередь, изменяет аргумент, переданный в #mutate. Однако внутри метода #not_mutate метод array.select не изменяет вызывающий её объект, поэтому #not_mutate также не изменяет его аргумент.

Больше методов здесь - https://docs.ruby-lang.org/en/master/Array.html#method-i-26