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