Tutorial by Examples

#map, provided by Enumerable, creates an array by invoking a block on each element and collecting the results: [1, 2, 3].map { |i| i * 3 } # => [3, 6, 9] ['1', '2', '3', '4', '5'].map { |i| i.to_i } # => [1, 2, 3, 4, 5] The original array is not modified; a new array is returned conta...
Arrays can be created by enclosing a list of elements in square brackets ([ and ]). Array elements in this notation are separated with commas: array = [1, 2, 3, 4] Arrays can contain any kind of objects in any combination with no restrictions on type: array = [1, 'b', nil, [3, 4]]
Arrays of strings can be created using ruby's percent string syntax: array = %w(one two three four) This is functionally equivalent to defining the array as: array = ['one', 'two', 'three', 'four'] Instead of %w() you may use other matching pairs of delimiters: %w{...}, %w[...] or %w<...&...
2.0 array = %i(one two three four) Creates the array [:one, :two, :three, :four]. Instead of %i(...), you may use %i{...} or %i[...] or %i!...! Additionally, if you want to use interpolation, you can do this with %I. 2.0 a = 'hello' b = 'goodbye' array_one = %I(#{a} #{b} world) array_tw...
An empty Array ([]) can be created with Array's class method, Array::new: Array.new To set the length of the array, pass a numerical argument: Array.new 3 #=> [nil, nil, nil] There are two ways to populate an array with default values: Pass an immutable value as second argument. P...
Adding elements: [1, 2, 3] << 4 # => [1, 2, 3, 4] [1, 2, 3].push(4) # => [1, 2, 3, 4] [1, 2, 3].unshift(4) # => [4, 1, 2, 3] [1, 2, 3] << [4, 5] # => [1, 2, 3, [4, 5]] Removing elements: array = [1, 2, 3, 4] array.pop # => 4 array # => [1, 2, 3] ...
x = [5, 5, 1, 3] y = [5, 2, 4, 3] Union (|) contains elements from both arrays, with duplicates removed: x | y => [5, 1, 3, 2, 4] Intersection (&) contains elements which are present both in first and second array: x & y => [5, 3] Difference (-) contains elements which ar...
Often we want to operate only on elements of an array that fulfill a specific condition: Select Will return elements that match a specific condition array = [1, 2, 3, 4, 5, 6] array.select { |number| number > 3 } # => [4, 5, 6] Reject Will return elements that do not match a specific c...
Inject and reduce are different names for the same thing. In other languages these functions are often called folds (like foldl or foldr). These methods are available on every Enumerable object. Inject takes a two argument function and applies that to all of the pairs of elements in the Array. For...
You can access the elements of an array by their indices. Array index numbering starts at 0. %w(a b c)[0] # => 'a' %w(a b c)[1] # => 'b' You can crop an array using range %w(a b c d)[1..2] # => ['b', 'c'] (indices from 1 to 2, including the 2) %w(a b c d)[1...2] # => ['b'] (indic...
Using the Array::new constructor, your can initialize an array with a given size and a new array in each of its slots. The inner arrays can also be given a size and and initial value. For instance, to create a 3x4 array of zeros: array = Array.new(3) { Array.new(4) { 0 } } The array generated a...
The * operator can be used to unpack variables and arrays so that they can be passed as individual arguments to a method. This can be used to wrap a single object in an Array if it is not already: def wrap_in_array(value) [*value] end wrap_in_array(1) #> [1] wrap_in_array([1, 2, 3]) ...
Any array can be quickly decomposed by assigning its elements into multiple variables. A simple example: arr = [1, 2, 3] # --- a = arr[0] b = arr[1] c = arr[2] # --- or, the same a, b, c = arr Preceding a variable with the splat operator (*) puts into it an array of all the elements that h...
[1, 2, [[3, 4], [5]], 6].flatten # => [1, 2, 3, 4, 5, 6] If you have a multi-dimensional array and you need to make it a simple (i.e. one-dimensional) array, you can use the #flatten method.
In case you need to read an array elements avoiding repetitions you case use the #uniq method: a = [1, 1, 2, 3, 4, 4, 5] a.uniq #=> [1, 2, 3, 4, 5] Instead, if you want to remove all duplicated elements from an array, you may use #uniq! method: a = [1, 1, 2, 3, 4, 4, 5] a.uniq! #=> [1...
The permutation method, when called with a block yields a two dimensional array consisting of all ordered sequences of a collection of numbers. If this method is called without a block, it will return an enumerator. To convert to an array, call the to_a method. ExampleResult[1,2,3].permutation#&lt...
This can be easily accomplished by calling Enumerable#to_a on a Range object: (1..10).to_a #=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] (a..b) means that it will include all numbers between a and b. To exclude the last number, use a...b a_range = 1...5 a_range.to_a #=> [1, 2, 3, 4] or...
If an array happens to have one or more nil elements and these need to be removed, the Array#compact or Array#compact! methods can be used, as below. array = [ 1, nil, 'hello', nil, '5', 33] array.compact # => [ 1, 'hello', '5', 33] #notice that the method returns a new copy of the array w...
The normal way to create an array of numbers: numbers = [1, 2, 3, 4, 5] Range objects can be used extensively to create an array of numbers: numbers = Array(1..10) # => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] numbers = (1..10).to_a # => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] #step and #map methods...
To get Array from any object, use Kernel#Array. The following is an example: Array('something') #=> ["something"] Array([2, 1, 5]) #=> [2, 1, 5] Array(1) #=> [1] Array(2..4) #=> [2, 3, 4] Array([]) #=> [] Array(nil) #=> [] For...

Page 1 of 1