Skip to content

Maintenance Ruby 3.3 gets fixes, but no new features. Switch to Ruby 4.0 →

class method

Array.new

Array.new → new_empty_array
Array.new(array) → new_array
Array.new(size) → new_array
Array.new(size, default_value) → new_array
Array.new(size) {|index| ... } → new_array

Returns a new Array.

With no block and no arguments, returns a new empty Array object.

With no block and a single Array argument array, returns a new Array formed from array:

Example
a = Array.new([:foo, 'bar', 2])
a.class # => Array
a # => [:foo, "bar", 2]

With no block and a single Integer argument size, returns a new Array of the given size whose elements are all nil:

Example
a = Array.new(3)
a # => [nil, nil, nil]

With no block and arguments size and default_value, returns an Array of the given size; each element is that same default_value:

Example
a = Array.new(3, 'x')
a # => ['x', 'x', 'x']

With a block and argument size, returns an Array of the given size; the block is called with each successive integer index; the element for that index is the return value from the block:

Example
a = Array.new(3) {|index| "Element #{index}" }
a # => ["Element 0", "Element 1", "Element 2"]

Raises ArgumentError if size is negative.

With a block and no argument, or a single argument 0, ignores the block and returns a new empty Array.

See also .[] .try_convert #& also in 4.1 · 4.0 · 3.4 · 3.2 · 3.1 · 3.0